class OrderDto(db.Model): __tablename__ = 'order' __table_args__ = {'mysql_collate': 'utf8_general_ci'} order_id: int = db.Column(db.Integer, primary_key=True, index=True) order_time: int = db.Column(db.Integer) # order_time : str = db.Column(db.DateTime, server_default=db.func.now()) #수정 order_cmnt: str = db.Column(db.String(200)) userid: str = db.Column(db.String(20), db.ForeignKey('User.userid')) #수정 shop_id: int = db.Column(db.Integer, db.ForeignKey('Shop.shop_id')) #수정 food_id: int = db.Column(db.Integer, db.ForeignKey('Food.food_id')) #수정 review_id: int = db.Column(db.Integer, db.ForeignKey('Review.review_id')) #수정 def __init__(self, order_time, order_cmnt, userid, shop_id, food_id, review_id): self.order_time = order_time self.order_cmnt = order_cmnt self.userid = userid self.shop_id = shop_id self.food_id = food_id self.review_id = review_id def __repr__(self): return f'order_id = {self.order_id},\ order_time = {self.order_time},\ order_cmnt = {self.order_cmnt},\ userid = {self.userid},\ shop_id = {self.shop_id},\ food_id = {self.food_id},\ review_id = {self.review_id}' @property def json(self): return { 'order_id': self.order_id, 'order_time': self.order_time, 'order_cmnt': self.order_cmnt, 'userid': self.userid, 'shop_id': self.shop_id, 'food_id': self.food_id, 'review_id': self.review_id } def save(self): # update와 create를 모두 수행 db.session.add(self) db.session.commit() def delete(self): db.session.delete(self) db.session.commit()
class OrderDto(db.Model): __tablename__ = "order" __table_args__ = {'mysql_collate': 'utf8_general_ci'} # 한글 인코딩 order_id: int = db.Column(db.Integer, primary_key=True, index=True) order_time: str = db.Column(db.Date) order_cmnt: str = db.Column(db.String(200)) userid: str = db.Column(db.String(20), db.ForeignKey('user.userid')) shop_id: int = db.Column(db.Integer, db.ForeignKey('shop.shop_id')) food_id: int = db.Column(db.Integer, db.ForeignKey('food.food_id')) reviews = db.relationship('ReviewDto', backref='order', lazy=True) def __init__(self, order_id, order_time, order_cmnt, userid, shop_id, food_id): self.order_id = order_id self.order_time = order_time self.order_cmnt = order_cmnt self.userid = userid self.shop_id = shop_id self.food_id = food_id def __repr__(self): return f'Order(order_id={self.order_id}, ' \ f'order_time={self.order_time}, ' \ f'order_cmnt={self.order_cmnt}, ' \ f'userid={self.userid}, ' \ f'shop_id={self.shop_id}' \ f'food_id={self.food_id}' @property def json(self): return { 'order_id': self.order_id, 'order_time': self.order_time, 'order_cmnt': self.order_cmnt, 'userid': self.userid, 'shop_id': self.shop_id, 'food_id': self.food_id }
class FoodDto(db.Model): __tablename__ = "food" __table_args__ = {'mysql_collate': 'utf8_general_ci'} # 한글 인코딩 food_id: int = db.Column(db.Integer, primary_key=True, index=True) food_name: str = db.Column(db.String(200)) price: int = db.Column(db.Integer) food_img: str = db.Column(db.String(1000)) # 최대 길이가 634정도였음 food_rev_avg: float = db.Column(db.Float) food_rev_cnt: float = db.Column(db.Integer) shop_id: int = db.Column(db.Integer, db.ForeignKey('shop.shop_id', ondelete="CASCADE")) # order_reviews = db.relationship('OrderReviewDto', backref='food', lazy='dynamic', cascade="all, delete, delete-orphan") order_reviews = db.relationship('OrderReviewDto', back_populates='foods', lazy='dynamic', cascade="all, delete, delete-orphan") def __init__(self, food_id, food_name, price, food_img, food_rev_avg, food_rev_cnt, shop_id): self.food_id = food_id self.food_name = food_name self.price = price self.food_img = food_img self.food_rev_avg = food_rev_avg self.food_rev_cnt = food_rev_cnt self.shop_id = shop_id def __repr__(self): return f'Food(food_id={self.food_id}, ' \ f'food_name={self.food_name}, ' \ f'price={self.price}, ' \ f'food_img={self.food_img}, ' \ f'food_rev_avg={self.food_rev_avg}, ' \ f'food_rev_cnt={self.food_rev_cnt}, ' \ f'shop_id="{self.shop_id}"' @property def json(self): return { 'food_id': self.food_id, 'food_name': self.food_name, 'price': self.price, 'food_img': self.food_img, 'food_rev_avg': self.food_rev_avg, 'food_rev_cnt': self.food_rev_cnt, 'shop_id': self.shop_id }
class FoodDto(db.Model): __tablename__ = "food" __table_args__ = {'mysql_collate': 'utf8_general_ci'} # 한글 인코딩 food_id: int = db.Column(db.Integer, primary_key=True, index=True) food_name: str = db.Column(db.String(30)) price: int = db.Column(db.Integer) food_rev_avg: float = db.Column(db.Float) food_rev_amt: float = db.Column(db.Integer) shop_id: int = db.Column(db.Integer, db.ForeignKey('shop.shop_id')) reviews = db.relationship('ReviewDto', backref='food', lazy=True) orders = db.relationship('OrderDto', backref='food', lazy=True) def __init__(self, food_id, food_name, price, food_rev_avg, food_rev_amt, shop_id): self.food_id = food_id self.food_name = food_name self.price = price self.food_rev_avg = food_rev_avg self.food_rev_amt = food_rev_amt self.shop_id = shop_id def __repr__(self): return f'Food(food_id={self.food_id}, ' \ f'food_name={self.food_name}, ' \ f'price={self.price}, ' \ f'food_rev_avg={self.food_rev_avg}, ' \ f'food_rev_amt={self.food_rev_amt}, ' \ f'shop_id="{self.shop_id}"' @property def json(self): return { 'food_id': self.food_id, 'food_name': self.food_name, 'price': self.price, 'food_rev_avg': self.food_rev_avg, 'food_rev_amt': self.food_rev_amt, 'shop_id': self.shop_id }
class OrderReviewDto(db.Model): __tablename__ = "order_review" __table_args__ = {'mysql_collate': 'utf8_general_ci'} # 한글 인코딩 or_id: int = db.Column(db.Integer, primary_key=True, index=True) order_time: str = db.Column(db.Date) review_cmnt: str = db.Column(db.Text) taste_rate: float = db.Column(db.Float) quantity_rate: float = db.Column(db.Float) delivery_rate: float = db.Column(db.Float) review_time: str = db.Column(db.Date) review_img: str = db.Column(db.String(300)) owner_cmnt: str = db.Column(db.Text) userid: str = db.Column(db.String(20), db.ForeignKey('user.userid', ondelete="CASCADE")) shop_id: int = db.Column(db.Integer, db.ForeignKey('shop.shop_id', ondelete="CASCADE")) food_id: int = db.Column(db.Integer, db.ForeignKey('food.food_id', ondelete="CASCADE")) foods = db.relationship('FoodDto', back_populates='order_reviews') # self.or_id = or_id def __init__(self, order_time=-1, userid='', shop_id=-1, food_id=-1, review_cmnt='', taste_rate=0.0, quantity_rate=0.0, delivery_rate=0.0, review_time=0.0, review_img='', owner_cmnt=1): self.order_time = order_time self.review_cmnt = review_cmnt self.taste_rate = taste_rate self.quantity_rate = quantity_rate self.delivery_rate = delivery_rate self.review_time = review_time self.review_img = review_img self.owner_cmnt = owner_cmnt self.userid = userid self.shop_id = shop_id self.food_id = food_id def __repr__(self): return f'OrderReview(or_id={self.or_id}, ' \ f'order_time={self.order_time}, ' \ f'review_cmnt={self.review_cmnt}, ' \ f'taste_rate={self.taste_rate}, ' \ f'quantity_rate={self.quantity_rate}, ' \ f'delivery_rate={self.delivery_rate}, ' \ f'review_time="{self.review_time}" ' \ f'review_img={self.review_img}, ' \ f'owner_cmnt={self.owner_cmnt}, ' \ f'userid={self.userid}, ' \ f'shop_id={self.shop_id} ' \ f'food_id={self.food_id}) ' \ @property def json(self): return { 'or_id': self.or_id, 'order_time': self.order_time, 'review_cmnt': self.review_cmnt, 'taste_rate': self.taste_rate, 'quantity_rate': self.quantity_rate, 'delivery_rate': self.delivery_rate, 'review_time': self.review_time, 'review_img': self.review_img, 'owner_cmnt': self.owner_cmnt, 'userid': self.userid, 'shop_id': self.shop_id, 'food_id': self.food_id, }