from sqlalchemy import func from src.db import db def _to_dict(self): dict_ = {} for key in self.__mapper__.c.keys(): dict_[key] = getattr(self, key) return dict_ class BaseModel(db.Model): __abstract__ = True id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), unique=True, nullable=False) escaped_name = db.Column(db.String(255), nullable=False) user_id = db.Column(db.String(255), nullable=False) email = db.Column(db.String(80), nullable=False) comment = db.Column(db.String(1024)) created_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), nullable=False) updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now(), nullable=False) def to_dict(self): return _to_dict(self) class Artist(BaseModel): __tablename__ = 'artist' __table_args__ = {"schema": "dna"} class Label(BaseModel): __tablename__ = 'label' __table_args__ = {"schema": "dna"} parent_label = db.Column(db.String(255)) full_match = db.Column(db.Boolean, default=True) class NonSignedArtist(db.Model): __tablename__ = 'non_signed_artist' __table_args__ = {"schema": "dna"} id = db.Column(db.Integer, primary_key=True) total_nsa = db.Column(db.Integer) new_nsa = db.Column(db.Integer) dropped_nsa = db.Column(db.Integer) created_at = db.Column(db.DateTime(), server_default=func.now(), nullable=False) def to_dict(self): return _to_dict(self) class NonSignedTrack(db.Model): __tablename__ = 'non_signed_track' __table_args__ = {"schema": "dna"} id = db.Column(db.Integer, primary_key=True) total_nst = db.Column(db.Integer) new_nst = db.Column(db.Integer) created_at = db.Column(db.DateTime(), server_default=func.now(), nullable=False) def to_dict(self): return _to_dict(self) class WeeklyReport(db.Model): __tablename__ = 'weekly_report' __table_args__ = {"schema": "dna"} id = db.Column(db.Integer, primary_key=True) artist_name = db.Column(db.String(511)) drop_off_date = db.Column(db.DateTime) release_date = db.Column(db.Date) label = db.Column(db.String(511)) album_type = db.Column(db.String(255)) tiktok_verified = db.Column(db.Boolean) tiktok_followers = db.Column(db.Integer) popularity_score = db.Column(db.Integer) spotify_followers = db.Column(db.Integer) spotify_link = db.Column(db.String(511)) dna_link = db.Column(db.String(511)) chartmetric_link = db.Column(db.String(511)) created_at = db.Column(db.DateTime(), server_default=func.now(), nullable=False) def to_dict(self): return _to_dict(self)