"""Auto Carveout DMS model.""" from typing import Any from sqlalchemy import Column, ForeignKey, select from sqlalchemy.dialects.mysql import INTEGER from sqlalchemy.orm import Mapped, mapped_column from video.connectors import mysql class AutoCarveoutDms(mysql.BaseModel): """Auto Carveout DMS model.""" __tablename__ = "auto_carveout_dms" auto_carveout_dms_id = Column( INTEGER, nullable=False, primary_key=True, autoincrement=True ) video_type_id: Mapped[str] = mapped_column( ForeignKey("video_type.video_type"), nullable=False ) dms_id = Column(INTEGER(unsigned=True), nullable=False) def to_dict(self) -> dict[str, Any]: """Get a dict representation.""" return { "auto_carveout_dms_id": self.auto_carveout_dms_id, "video_type_id": self.video_type_id, "dms_id": self.dms_id, } def get_auto_carveouts_by_video_type_id(video_type_id: str) -> list[dict[str, Any]]: """Get auto_carveouts by video_type_id. Returns: list[dict]: list of auto carveout dicts, or [] if none found """ with mysql.db_session() as session: auto_carveout_dms_results = ( session.execute( select(AutoCarveoutDms).where( AutoCarveoutDms.video_type_id == video_type_id ) ) .scalars() .all() ) return [result.to_dict() for result in auto_carveout_dms_results]