from sqlalchemy import Column from sqlalchemy.dialects.postgresql import JSONB from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.types import VARCHAR from config import POSTGRES_DATA_SCHEMA Base: declarative_base = declarative_base() class TrackData(Base): __abstract__ = True id = Column(VARCHAR, primary_key=True) value = Column(JSONB, nullable=False) class TrackExternalLinks(TrackData): __tablename__ = "track_external_links" __table_args__ = {"schema": POSTGRES_DATA_SCHEMA} class TrackTiktokVideos(TrackData): __tablename__ = "track_tiktok_videos" __table_args__ = {"schema": POSTGRES_DATA_SCHEMA} class TrackYoutubeVideos(TrackData): __tablename__ = "track_youtube_videos" __table_args__ = {"schema": POSTGRES_DATA_SCHEMA} class TrackSearchData(TrackData): __tablename__ = "track_search_data" __table_args__ = {"schema": POSTGRES_DATA_SCHEMA}