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 ArtistData(Base): __abstract__ = True id = Column(VARCHAR, primary_key=True) value = Column(JSONB, nullable=False) class ArtistSpotifyTracks(ArtistData): __tablename__ = "artist_spotify_tracks" __table_args__ = {"schema": POSTGRES_DATA_SCHEMA} class ArtistSpotifyAlbums(ArtistData): __tablename__ = "artist_spotify_albums" __table_args__ = {"schema": POSTGRES_DATA_SCHEMA} class ArtistExternalLinks(ArtistData): __tablename__ = "artist_external_links" __table_args__ = {"schema": POSTGRES_DATA_SCHEMA} class ArtistTiktokVideos(ArtistData): __tablename__ = "artist_tiktok_videos" __table_args__ = {"schema": POSTGRES_DATA_SCHEMA} class ArtistYoutubeVideos(ArtistData): __tablename__ = "artist_youtube_videos" __table_args__ = {"schema": POSTGRES_DATA_SCHEMA} class ArtistSoundCloudTracks(ArtistData): __tablename__ = "artist_soundcloud_tracks" __table_args__ = {"schema": POSTGRES_DATA_SCHEMA} class ArtistSearchData(ArtistData): __tablename__ = "artist_search_data" __table_args__ = {"schema": POSTGRES_DATA_SCHEMA}