from sqlalchemy import func from sqlalchemy.types import Boolean, BigInteger, DateTime, VARCHAR from sqlalchemy import Column, UniqueConstraint, ForeignKey, Index from sqlalchemy.ext.declarative import declarative_base Base: declarative_base = declarative_base() class Category(Base): __tablename__ = "category" id = Column(BigInteger, primary_key=True) name = Column(VARCHAR, nullable=False) user_id = Column(VARCHAR, nullable=False) created_at = Column(DateTime(), server_default=func.now(), nullable=False) updated_at = Column(DateTime(), onupdate=func.now(), nullable=False) is_deleted = Column(DateTime(), default=None) is_homepage = Column(Boolean, default=False) __table_args__ = ( Index("category_name_user_id_is_deleted_idx_2", "name", "user_id", "is_deleted"), Index("category_name_user_id_idx_2", "name", "user_id"), {"schema": "dna"}, ) class CategoryEntity(Base): __tablename__ = "category_entity" id = Column(BigInteger, primary_key=True) category_id = Column(BigInteger, ForeignKey(Category.id, ondelete="CASCADE"), nullable=False) entity_id = Column(BigInteger, nullable=False) entity_type = Column(VARCHAR, nullable=False) created_at = Column(DateTime(), server_default=func.now(), nullable=False) cover_image = Column(VARCHAR, default=None) chart_type = Column(VARCHAR, default=None) __table_args__ = ( UniqueConstraint( "category_id", "entity_id", "entity_type", name="category_entity_category_id_entity_id_entity_type_key" ), {"schema": "dna"}, )