class ShopDto(db.Model): __tablename__ = "shop" __table_args__ = {'mysql_collate': 'utf8_general_ci'} # 한글 인코딩 shop_id: int = db.Column(db.Integer, primary_key=True, index=True) shop_name: str = db.Column(db.String(30)) shop_addr: str = db.Column(db.String(100)) shop_img: str = db.Column(db.String(200), default='shop_default.png') cat: str = db.Column(db.String(100)) shop_lat: float = db.Column(db.Float) shop_lng: float = db.Column(db.Float) shop_rev_avg: float = db.Column(db.Float) shop_rev_cnt: int = db.Column(db.Integer) open_time: str = db.Column(db.String(30)) foods = db.relationship('FoodDto', backref='shop', lazy='dynamic', cascade="all, delete, delete-orphan") order_reviews = db.relationship('OrderReviewDto', backref='shop', lazy='dynamic', cascade="all, delete, delete-orphan") def __init__(self, shop_id, shop_name, shop_addr, shop_img, cat, shop_lat, shop_lng, shop_rev_avg, shop_rev_cnt, open_time): self.shop_id = shop_id self.shop_name = shop_name self.shop_addr = shop_addr self.shop_img = shop_img self.cat = cat self.shop_lat = shop_lat self.shop_lng = shop_lng self.shop_rev_avg = shop_rev_avg self.shop_rev_cnt = shop_rev_cnt self.open_time = open_time def __repr__(self): return f'Shop(shop_id={self.shop_id}, shop_name={self.shop_name}, ' \ f'shop_addr={self.shop_addr}, ,shop_img={self.shop_img}, cat={self.cat},' \ f'shop_lat={self.shop_lat}, shop_lng="{self.shop_lng}"' \ f'shopt_rev_avg={self.shop_rev_avg}, shop_rev_cnt={self.shop_rev_cnt}' \ f'open_time={self.open_time}' @property def json(self): return { 'shop_id': self.shop_id, 'shop_name': self.shop_name, 'shop_addr': self.shop_addr, 'shop_img': self.shop_img, 'cat': self.cat, 'shop_lat': self.shop_lat, 'shop_lng': self.shop_lng, 'shop_rev_avg': self.shop_rev_avg, 'shop_rev_cnt': self.shop_rev_cnt, 'open_time': self.open_time }
class UserDto(db.Model): __tablename__ = "user" __table_args__ = {'mysql_collate': 'utf8_general_ci'} # 한글 인코딩 userid: str = db.Column(db.String(20), primary_key=True, index=True) password: str = db.Column(db.String(200)) name: str = db.Column(db.String(30)) age: int = db.Column(db.Integer) gender: int = db.Column(db.Integer) addr: str = db.Column(db.String(100)) lat: float = db.Column(db.Float) lng: float = db.Column(db.Float) order_reviews = db.relationship('OrderReviewDto', backref='user', lazy='dynamic', cascade="all, delete, delete-orphan") def __init__(self, userid, password, name, age=0, gender=0, addr='', lat=0, lng=0): self.userid = userid self.password = password self.name = name self.age = age self.gender = gender self.addr = addr self.lat = lat self.lng = lng def __repr__(self): return f'User(userid={self.userid}, ' \ f'password={self.password}, ' \ f'name={self.name},' \ f'age={self.age},' \ f'gender={self.gender},' \ f'addr={self.addr}, ' \ f'lat={self.lat}, ' \ f'lng={self.lng})' @property def json(self): return { 'userid': self.userid, 'password': self.password, 'name': self.name, 'age': self.age, 'gender': self.gender, 'addr': self.addr, 'lat': self.lat, 'lng': self.lng }
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 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 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 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, }