hku-class-hub/backend/app/schemas/vote.py
2026-04-12 11:56:39 +08:00

52 lines
1.1 KiB
Python

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