Skip to content

Commit

Permalink
feat: add Rating model
Browse files Browse the repository at this point in the history
  • Loading branch information
Flora2020 committed Aug 27, 2021
1 parent fd9ea0a commit 34bb3f6
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 1 deletion.
1 change: 1 addition & 0 deletions models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@
from models.order import Order
from models.payment import Payment
from models.order_item import OrderItem
from models.rating import Rating
3 changes: 2 additions & 1 deletion models/order_item.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class OrderItem(db.Model):

order = db.relationship('Order', back_populates='products')
product = db.relationship('Product', back_populates='orders')
rating = db.relationship('Rating', back_populates='order_item', uselist=False)

def __repr__(self):
return f'<OrderItem {self.id}>'
Expand All @@ -25,7 +26,7 @@ def save_to_db(self):
@classmethod
def find_by_order_id(cls, order_id):
return cls.query.filter_by(order_id=order_id).first()

@classmethod
def find_by_product_id(cls, product_id):
return cls.query.filter_by(product_id=product_id).first()
38 changes: 38 additions & 0 deletions models/rating.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
from app import db
from datetime import datetime


class Rating(db.Model):
__tablename__ = 'rating'

id = db.Column(db.Integer, primary_key=True)
score = db.Column(db.SmallInteger, nullable=False)
comment = db.Column(db.String(2000))
insert_time = db.Column(db.DateTime, nullable=False, default=datetime.now)
update_time = db.Column(db.DateTime, onupdate=datetime.now, nullable=False, default=datetime.now)
rater_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
ratee_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
order_item_order_id = db.Column(db.Integer, nullable=False)
order_item_product_id = db.Column(db.Integer, nullable=False)

__table_args__ = (
db.ForeignKeyConstraint(
['order_item_order_id', 'order_item_product_id'],
['order_item.order_id', 'order_item.product_id']
),
)

rater = db.relationship('User', back_populates="rating_record")
ratee = db.relationship('User', back_populates="rated_record")
order_item = db.relationship('OrderItem', back_populates="rating")

def __repr__(self):
return f'<Rating score: {self.score}>'

def save_to_db(self):
db.session.add(self)
db.session.commit()

@classmethod
def find_by_id(cls, _id):
return cls.query.filter_by(id=_id).first()
2 changes: 2 additions & 0 deletions models/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ class User(db.Model):
for_sale = db.relationship('Product', back_populates='seller')
delivery_orders = db.relationship('Order', back_populates='seller')
purchase_order = db.relationship('Order', back_populates='buyer')
rating_record = db.relationship('Rating', back_populates="rater")
rated_record = db.relationship('Rating', back_populates="ratee")

def __repr__(self):
return f'<User {self.email}>'
Expand Down

0 comments on commit 34bb3f6

Please sign in to comment.