class Bezorging(TimedBaseModel, EditieRelatedModel, StraatRelatedModel): __tablename__ = "bezorging" id = db.Column(db.BigInteger, autoincrement=True, primary_key=True, index=True, unique=True) status = db.Column(db.Enum(BezorgingsStatus), server_default=BezorgingsStatus.open.name, nullable=False) opmerking = db.Column(db.Text) query: Select
class User(TimedBaseModel): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True, index=True, unique=True) first_name = db.Column(db.String, nullable=False) last_name = db.Column(db.String) username = db.Column(db.String) language = db.Column(db.String, nullable=True) query: Select
class Editie(TimedBaseModel): __tablename__ = "edities" id = db.Column(db.BigInteger, primary_key=True, autoincrement=True, index=True, unique=True) naam = db.Column(db.String) url = db.Column(db.String) cover = db.Column(db.String) actief = db.Column(db.Boolean, server_default=expression.false()) query: Select
class Groep(BaseModel): __tablename__ = "groepen" id = db.Column(db.BigInteger, autoincrement=True, primary_key=True, index=True, unique=True) chatId = db.Column(db.BigInteger, unique=True) query: Select
class Huis(StraatRelatedModel): __tablename__ = "huizen" id = db.Column(db.BigInteger, autoincrement=True, primary_key=True, index=True, unique=True) nummer = db.Column(db.String, nullable=False) gewenst = db.Column(db.Enum(Gewenst), server_default=Gewenst.nee.name, nullable=False) query: Select
class UserSettings(UserRelatedModel): __tablename__ = 'user_settings' id = db.Column(db.Integer, primary_key=True, index=True, unique=True) notifications_general_enabled = db.Column(db.Boolean) notifications_advance_enabled = db.Column(db.Boolean) notifications_periodical_frequency_enabled = db.Column(db.Boolean) notifications_advance_days_until_expiration = db.Column(db.Integer) notifications_periodical_frequency = db.Column(db.Integer) notifications_weekly_enabled = db.Column(db.Boolean) notifications_weekly_day = db.Column(db.Integer) last_notify_day_frequency = db.Column(db.Date) automatic_bought_date = db.Column(db.Boolean) query: Select
class BezorgingRelatedModel(BaseModel): __abstract__ = True groep_id = db.Column( db.ForeignKey(f"{Bezorging.__tablename__}.id", ondelete="CASCADE", onupdate="CASCADE"), nullable=False, )
class EditieRelatedModel(BaseModel): __abstract__ = True editie_id = db.Column( db.ForeignKey(f"{Editie.__tablename__}.id", ondelete="CASCADE", onupdate="CASCADE"), nullable=False, )
class UserRelatedModel(BaseModel): __abstract__ = True user_id = db.Column( db.ForeignKey(f"{User.__tablename__}.id", ondelete="CASCADE", onupdate="CASCADE"), nullable=False, )
class ChatRelatedMixin: chat_id = db.Column( db.ForeignKey(f"{Chat.__tablename__}.id", ondelete="CASCADE", onupdate="CASCADE"), nullable=False, )
class PlaatsRelatedModel(BaseModel): __abstract__ = True plaats_id = db.Column( db.ForeignKey(f"{Plaats.__tablename__}.id", ondelete="CASCADE", onupdate="CASCADE"), nullable=True, )
class WijkRelatedModel(BaseModel): __abstract__ = True straat_id = db.Column( db.ForeignKey(f"{Wijk.__tablename__}.id", ondelete="CASCADE", onupdate="CASCADE"), nullable=True, )
class Straat(LocatieModel, PlaatsRelatedModel, WijkRelatedModel): __tablename__ = "straten" id = db.Column(db.BigInteger, autoincrement=True, primary_key=True, index=True, unique=True) query: Select
class Plaats(LocatieModel): __tablename__ = "plaatsen" id = db.Column(db.BigInteger, autoincrement=True, primary_key=True, index=True, unique=True) query: Select
class Product(UserRelatedModel): __tablename__ = "products" id = db.Column(db.Integer, primary_key=True, index=True, unique=True) name = db.Column(db.String, nullable=False) expiration_date = db.Column(db.Date) bought_date = db.Column(db.Date) info = db.Column(db.String) query: Select @staticmethod def create_product(id: int, name: str, expiration_date: datetime, bought_date: datetime, info: str, user_id: int): product = Product() product.id = id product.name = name product.expiration_date = expiration_date product.bought_date = bought_date product.info = info product.user_id = user_id return product
class Chat(TimedBaseModel): __tablename__ = "chats" id = db.Column(db.BigInteger, primary_key=True, index=True) type = db.Column(db.String)
class User(TimedBaseModel): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True, index=True, unique=True) is_superuser = db.Column(db.Boolean, server_default=expression.false()) query: Select
class UserRelatedMixin: user_id = db.Column( db.ForeignKey(f"{User.__tablename__}.id", ondelete="CASCADE", onupdate="CASCADE"), nullable=False, )
class ShoppingList(UserRelatedModel): __tablename__ = "shopping_lists" id = db.Column(db.Integer, primary_key=True, index=True, unique=True) query: Select
class LocatieModel(GroepRelatedModel): __abstract__ = True name = db.Column(db.String) opmerking = db.Column(db.Text)