class UserModel(db.Model): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) password = db.Column(db.String(80)) def __init__(self, username: str, password: str): self.username = username self.password = password def json(self) -> UserJSON: return {"id": self.id, "username": self.username} @classmethod def find_by_username(cls, username: str) -> "UserModel": return cls.query.filter_by(username=username).first() @classmethod def find_by_id(cls, _id: int): return cls.query.filter_by(id=_id).first() def save_to_db(self) -> None: db.session.add(self) db.session.commit() def delete_from_db(self) -> None: db.session.delete(self) db.session.commit()
class StoreModel(db.Model): __tablename__ = "stores" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) items = db.relationship("ItemModel", lazy="dynamic") def __init__(self, name: str): self.name = name def json(self) -> StoreJSON: return { "id": self.id, "name": self.name, "items": [item.json() for item in self.items.all()], } @classmethod def find_by_name(cls, name: str) -> "StoreModel": return cls.query.filter_by(name=name).first() @classmethod def find_all(cls) -> List["StoreModel"]: return cls.query.all() def save_to_db(self) -> None: db.session.add(self) db.session.commit() def delete_from_db(self) -> None: db.session.delete(self) db.session.commit()
class StoreModel(db.Model): __tablename__ = "stores" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), nullable=False, unique=True) items = db.relationship("ItemModel", lazy="dynamic") def __init__(self, name: str): self.name = name @classmethod def find_by_name(cls, name: str) -> "StoreModel": return cls.query.filter_by(name=name).first() @classmethod def find_all(cls) -> List["StoreModel"]: return cls.query.all() def save_to_db(self) -> None: db.session.add(self) db.session.commit() def delete_from_db(self) -> None: db.session.delete(self) db.session.commit()
class ItemModel(db.Model): __tablename__ = "items" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), nullable=False, unique=True) price = db.Column(db.Float(precision=2), nullable=False) store_id = db.Column(db.Integer, db.ForeignKey("stores.id"), nullable=False) store = db.relationship("StoreModel") @classmethod def find_by_name(cls, name: str) -> "ItemModel": return cls.query.filter_by(name=name).first() @classmethod def find_all(cls) -> List["ItemModel"]: return cls.query.all() def save_to_db(self) -> None: db.session.add(self) db.session.commit() def delete_from_db(self) -> None: db.session.delete(self) db.session.commit()
class UserModel(db.Model): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), nullable=False, unique=True) password = db.Column(db.String(80), nullable=False) @classmethod def find_by_username(cls, username: str) -> "UserModel": return cls.query.filter_by(username=username).first() @classmethod def find_by_id(cls, _id: int) -> "UserModel": return cls.query.filter_by(id=_id).first() def save_to_db(self) -> None: db.session.add(self) db.session.commit() def delete_from_db(self) -> None: db.session.delete(self) db.session.commit()
class ItemModel(db.Model): __tablename__ = "items" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True) price = db.Column(db.Float(precision=2)) store_id = db.Column(db.Integer, db.ForeignKey("stores.id")) store = db.relationship("StoreModel") def __init__(self, name:str, price:float, store_id:int): self.name = name self.price = price self.store_id = store_id def json(self) -> ItemJSON: return { "id": self.id, "name": self.name, "price": self.price, "store_id": self.store_id, } @classmethod def find_by_name(cls, name:str) -> "ItemModel": return cls.query.filter_by(name=name).first() @classmethod def find_all(cls) -> List["ItemModel"]: return cls.query.all() def save_to_db(self) -> None: db.session.add(self) db.session.commit() def delete_from_db(self) -> None: db.session.delete(self) db.session.commit()