from sqlalchemy import ( Column, DateTime, ForeignKey, Integer, String, create_engine, func, insert, select, ) from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from popup_api.settings import settings # isort:skip engine = create_engine( url=settings.DATABASE_URL, echo=settings.DATABASE_ECHO, connect_args=settings.DATABASE_CONNECT_ARGS, ) Base = declarative_base() Session = sessionmaker(bind=engine) # ========== # Data Model # ========== class Task(Base): __tablename__ = "popup_task" id = Column(Integer, primary_key=True, autoincrement=True, comment="序号") name = Column(String(50), nullable=False, comment="任务名称") priority = Column(Integer, nullable=False, default=0, comment="任务优先级") description = Column(String(200), nullable=True, comment="任务描述", default="") create_at = Column( DateTime(timezone=True), server_default=func.now(), comment="创建时间", ) update_at = Column( DateTime(timezone=True), onupdate=func.now(), comment="更新时间", ) is_done = Column(Integer, nullable=False, default=0, comment="是否完成") group_id = Column(Integer, ForeignKey("popup_group.id"), default=1, comment="分类序号") def __repr__(self): return f"" class Group(Base): __tablename__ = "popup_group" id = Column(Integer, primary_key=True, autoincrement=True, comment="分类序号") name = Column( String(50), nullable=False, default="收集箱", comment="分类名称", unique=True, ) def __repr__(self): return f"