from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String from sqlalchemy.orm import declarative_base Base = declarative_base() class Entity(Base): # pylint: disable=too-few-public-methods __abstract__ = True __table_args__ = {"schema": "public_2"} id = Column(String, primary_key=True) data_source = Column(String, primary_key=True) storefront = Column(String, primary_key=True) ttl_minutes = Column(Integer, nullable=False) expired_at = Column(DateTime(timezone=True), nullable=False) is_removed = Column(Boolean, nullable=False) is_removed_expired_at = Column(DateTime(timezone=True), nullable=False) created_at = Column(DateTime(timezone=True), nullable=False) updated_at = Column(DateTime(timezone=True), nullable=False) class BuzzCategory(Base): __tablename__ = "buzz_category" __table_args__ = {"schema": "public_2"} id = Column(Integer, primary_key=True) name = Column(String, nullable=False) class BuzzUser(Base): __tablename__ = "buzz_user" __table_args__ = {"schema": "public_2"} username = Column(String, primary_key=True) display_name = Column(String) storefront = Column(String) buzz_category_id = Column(String, ForeignKey("buzz_category.id")) class Playlist(Entity): # pylint: disable=too-few-public-methods __tablename__ = "playlists" save_tracklist = Column(Boolean) save_tracklist_history = Column(Boolean) is_ignored = Column(Boolean) type = Column(String) snapshot_id = Column(String) buzz_user_username = Column(String, ForeignKey("buzz_user.username")) is_personalized = Column(String) class Album(Entity): # pylint: disable=too-few-public-methods __tablename__ = "albums" class Artist(Entity): # pylint: disable=too-few-public-methods __tablename__ = "artists" class Track(Entity): # pylint: disable=too-few-public-methods __tablename__ = "tracks"