diff --git a/dakiny_bot/database/models.py b/dakiny_bot/database/models.py new file mode 100644 index 0000000..0ef0e47 --- /dev/null +++ b/dakiny_bot/database/models.py @@ -0,0 +1,32 @@ +"""File holds all model definitions of SQL tables.""" + +from sqlalchemy.dialects.mysql import BIGINT, VARCHAR +from sqlmodel import Column, Field, SQLModel + + +class ElectionInformation(SQLModel, table=True): + """Represents all required information for an election. + + Attributes: + name: Name of the election. + thread_id: Thread of where all the election related messages take place. + council_vote_msg_id: Message where the council vote is presented. + high_council_vote_msg_id: Message where the high council vote is presented. + council_nomination_msg_id: Message where council nomination button is held. + high_council_nomination_msg_id: Message where high council nomination button is held. + """ + + name: str = Field(sa_column=Column("ElectionName", VARCHAR, primary_key=True, unique=True), max_length=30) + thread_id: int = Field(sa_column=Column("ThreadId", BIGINT(unsigned=True), nullable=False)) + council_vote_msg_id: int | None = Field( + sa_column=Column("CouncilVoteMsgId", BIGINT(unsigned=True), nullable=True), default=None + ) + high_council_vote_msg_id: int | None = Field( + sa_column=Column("HighCouncilVoteMsgId", BIGINT(unsigned=True), nullable=True), default=None + ) + council_nomination_msg_id: int | None = Field( + sa_column=Column("CouncilNominationMsgId", BIGINT(unsigned=True), nullable=True), default=None + ) + high_council_nomination_msg_id: int | None = Field( + sa_column=Column("HighCouncilNominationMsgId", BIGINT(unsigned=True), nullable=True), default=None + )