""" crud.py This module defines the operations for the Expressive TTS Arena project's database. Since vote records are never updated or deleted, only functions to create and read votes are provided. """ # Third-Party Library Imports from sqlalchemy.orm import Session # Local Application Imports from src.custom_types import VotingResults from src.database.models import VoteResult def create_vote(db: Session, vote_data: VotingResults) -> VoteResult: """ Create a new vote record in the database based on the given VotingResults data. Args: db (Session): The SQLAlchemy database session. vote_data (VotingResults): The vote data to persist. Returns: VoteResult: The newly created vote record. """ vote = VoteResult( comparison_type=vote_data["comparison_type"], winning_provider=vote_data["winning_provider"], winning_option=vote_data["winning_option"], option_a_provider=vote_data["option_a_provider"], option_b_provider=vote_data["option_b_provider"], option_a_generation_id=vote_data["option_a_generation_id"], option_b_generation_id=vote_data["option_b_generation_id"], voice_description=vote_data["voice_description"], text=vote_data["text"], is_custom_text=vote_data["is_custom_text"], ) db.add(vote) try: db.commit() except Exception as e: db.rollback() raise e db.refresh(vote) return vote