"""Product Video Sizing Rules Logic.""" from typing import Any from video.connectors import mysql from video.exceptions import InvalidRequest from video.models.sql.classes import ( product_video_output_resolutions, product_video_sizing_rules, ) def load_resolution_overrides() -> list[dict[str, Any]]: """Load video resolution overrides.""" with mysql.db_session() as session: return product_video_sizing_rules.get_all(session) def load_resolution_override(item_id: int) -> dict[str, Any]: """Load video resolution override by id.""" with mysql.db_session() as session: return product_video_sizing_rules.get(item_id, session) def save_sizing_rule( data: dict[str, Any], orchard_user_id: str | None = None ) -> dict[str, Any]: """Save video resolution override.""" with mysql.db_session() as session: corresponding_output_resolutions = product_video_output_resolutions.get( data["video_resolution_id"], session ) duplicates = product_video_sizing_rules.find( data["input_inner_width"], data["input_inner_height"], session ) if not corresponding_output_resolutions or duplicates: raise InvalidRequest("invalid video resolution") data["created_by"] = orchard_user_id return product_video_sizing_rules.insert(data, session) def delete_sizing_rule( item_id: int, orchard_user_id: str | None = None ) -> dict[str, Any]: """Delete video sizing rule (mark as deleted).""" with mysql.db_session() as session: return product_video_sizing_rules.delete( item_id, orchard_user_id, session=session ) def load_output_video_outer_resolutions() -> list[tuple[int, int, int]]: """Get array of available output resolutions as tuples (id, outer_width, outer_height).""" with mysql.db_session() as session: return product_video_output_resolutions.get_all(session)