from datetime import datetime from pydantic import BaseModel class VoteCreate(BaseModel): title: str description: str | None = None vote_type: str = "single" # single | multiple is_anonymous: bool = False max_choices: int = 1 deadline: datetime | None = None options: list[str] # option text list, min 2 class VoteUpdate(BaseModel): title: str | None = None description: str | None = None status: str | None = None # to close a vote class VoteSubmit(BaseModel): option_ids: list[int] # selected option IDs class VoteOptionOut(BaseModel): id: int content: str sort_order: int vote_count: int voter_names: list[str] | None = None # None if anonymous class VoteOut(BaseModel): id: int class_id: int creator_id: int creator_name: str title: str description: str | None vote_type: str is_anonymous: bool max_choices: int deadline: datetime | None status: str total_voters: int has_voted: bool my_option_ids: list[int] | None = None options: list[VoteOptionOut] created_at: datetime updated_at: datetime