"""Available product video output resolution model. Used for UI.""" from typing import Any from sqlalchemy import Boolean, Column, Integer, select from sqlalchemy.orm import Session from sqlalchemy.sql.expression import false from video.connectors import mysql class ProductVideoOutputResolution(mysql.BaseModel): """Product Video.""" __tablename__ = "supported_video_resolutions" pk = Column( Integer, name="id", nullable=False, primary_key=True, autoincrement=True, ) output_outer_width = Column( Integer, nullable=False, ) output_outer_height = Column( Integer, nullable=False, ) is_deleted = Column(Boolean, nullable=False, default=False) def to_dict(self) -> dict[str, Any]: """Get a dict representation.""" return { "id": self.pk, "output_outer_width": self.output_outer_width, "output_outer_height": self.output_outer_height, } def to_tuple(self) -> tuple[Any, Any, Any]: """Get a tuple representation.""" return (self.pk, self.output_outer_width, self.output_outer_height) def get_all(session: Session) -> list[tuple[Any, Any, Any]]: """Get all output video resolution.""" output_resolutions = ( session.execute( select(ProductVideoOutputResolution).where( ProductVideoOutputResolution.is_deleted == false() ) ) .scalars() .all() ) return [item.to_tuple() for item in output_resolutions] def get(resolution_id: int, session: Session) -> ProductVideoOutputResolution | None: """Get all output video resolution.""" resolution = session.execute( select(ProductVideoOutputResolution).where( ProductVideoOutputResolution.pk == resolution_id, ProductVideoOutputResolution.is_deleted == false(), ) ).scalar_one_or_none() return resolution