diyalgo/diyalgo/models/poll.py

29 lines
1.0 KiB
Python

from datetime import datetime
from typing import Optional, List, TYPE_CHECKING
from sqlmodel import Field, SQLModel, Relationship
if TYPE_CHECKING:
from diyalgo.models import CustomEmoji, Status
class PollOption(SQLModel, table=True):
id: Optional[int] = Field(primary_key=True, default=None)
poll_id: Optional[int] = Field(default=None, foreign_key='poll.id')
poll: 'Poll' = Relationship(back_populates='options')
title: str
votes_count: Optional[int] = None
class Poll(SQLModel, table=True):
id: int = Field(primary_key=True)
#emojis: List["CustomEmoji"] = Field(default_factory=list)
expires_at: Optional[datetime] = None
expired: bool
multiple: bool
options: List[PollOption] = Relationship(back_populates='poll')
own_votes: List[int] = Field(default_factory=list)
voted: Optional[bool] = None
votes_count: int
voters_count: Optional[int] = None
#status_id: Optional[int] = Field(default=None, foreign_key='status.id')
#status: 'Status' = Relationship(back_populates='poll')