HumeAI/expressive-tts-arena
68
1# Standard Library Imports2from enum import Enum3 4# Third-Party Library Imports5from sqlalchemy import (6 Boolean,7 Column,8 DateTime,9 Index,10 Integer,11 String,12 Text,13 func,14)15from sqlalchemy import (16 Enum as saEnum,17)18from sqlalchemy import (19 text as sa_text,20)21 22# Local Application Imports23from .database import Base24 25 26class OptionEnum(str, Enum):27 OPTION_A = "option_a"28 OPTION_B = "option_b"29 30class VoteResult(Base):31 __tablename__ = "vote_results"32 33 id = Column(Integer, primary_key=True, autoincrement=True)34 created_at = Column(DateTime, nullable=False, server_default=func.now())35 comparison_type = Column(String(50), nullable=False)36 winning_provider = Column(String(50), nullable=False)37 winning_option = Column(saEnum(OptionEnum), nullable=False) # type: ignore38 option_a_provider = Column(String(50), nullable=False)39 option_b_provider = Column(String(50), nullable=False)40 option_a_generation_id = Column(String(100), nullable=True)41 option_b_generation_id = Column(String(100), nullable=True)42 voice_description = Column(Text, nullable=False)43 text = Column(Text, nullable=False)44 is_custom_text = Column(Boolean, nullable=False, server_default=sa_text("false"))45 46 __table_args__ = (47 Index("idx_created_at", "created_at"),48 Index("idx_comparison_type", "comparison_type"),49 Index("idx_winning_provider", "winning_provider"),50 )51 52 def __repr__(self):53 return (54 f"<VoteResult(id={self.id}, created_at={self.created_at}, "55 f"comparison_type={self.comparison_type}, winning_provider={self.winning_provider})>"56 )57 