import enum from sqlalchemy import Column, String, Integer, Text, Boolean, Enum, ForeignKey from sqlalchemy.dialects.postgresql import UUID, JSONB from sqlalchemy.orm import relationship from app.models.base import BaseModel class AssetType(str, enum.Enum): PRESENTATION = "presentation" ONE_PAGER = "one_pager" CASE_STUDY = "case_study" ROI_CALCULATOR = "roi_calculator" SCRIPT = "script" class KnowledgeArticle(BaseModel): __tablename__ = "knowledge_articles" category = Column(String(100), nullable=True, index=True) title = Column(String(255), nullable=False) title_ar = Column(String(255), nullable=True) content = Column(Text, nullable=False) content_ar = Column(Text, nullable=True) tags = Column(JSONB, default=[]) is_internal = Column(Boolean, default=False) is_active = Column(Boolean, default=True) author_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=True) version = Column(Integer, default=1) author = relationship("User") class SectorAsset(BaseModel): __tablename__ = "sector_assets" sector = Column(String(100), nullable=False, index=True) asset_type = Column(Enum(AssetType), nullable=False) title = Column(String(255), nullable=False) title_ar = Column(String(255), nullable=True) content = Column(Text, nullable=True) content_ar = Column(Text, nullable=True) file_url = Column(String(500), nullable=True) metadata = Column(JSONB, default={}) is_active = Column(Boolean, default=True)