"""Artist delivery settings model.""" from typing import Any from sqlalchemy import Column, Enum, Integer, String, select from sqlalchemy.orm import Mapped, Session, mapped_column from video.connectors import mysql class ArtistDeliverySettings(mysql.ArModel): """Artist youtube delivery settings.""" __tablename__ = "artist_yt_delivery_settings" primary_key = Column( Integer, name="id", nullable=False, primary_key=True, autoincrement=True, ) artist_id = Column(Integer) vevo_controlled: Mapped[str | None] = mapped_column(Enum("No", "Yes")) channel_name = Column(String) channel_id = Column(String) def to_dict(self) -> dict[str, Any]: """Get a dict representation.""" return { "id": self.primary_key, "artist_id": self.artist_id, "channel_id": self.channel_id, "channel_name": self.channel_name, "vevo_controlled": self.vevo_controlled, } def get(artist_id: int, session: Session | None = None) -> list[dict[str, Any]]: """Get by artist_id.""" if session is None: with mysql.ar_db_session() as s: return get(artist_id, session=s) channels = ( session.execute( select(ArtistDeliverySettings).where( ArtistDeliverySettings.artist_id == artist_id ) ) .scalars() .all() ) return [c.to_dict() for c in channels]