From f20612cc52e9d20c57191b6b654995baf51069f2 Mon Sep 17 00:00:00 2001 From: Leander Furumo Date: Sat, 20 Apr 2024 13:43:24 +0200 Subject: [PATCH] add models.py --- bot/requirements.txt | 1 + bot/src/models.py | 78 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 bot/src/models.py diff --git a/bot/requirements.txt b/bot/requirements.txt index 9a19a8e..6631e40 100644 --- a/bot/requirements.txt +++ b/bot/requirements.txt @@ -2,6 +2,7 @@ asyncio==3.4.* asyncpg==0.29.* discord.py==2.3.* psutil==5.9.* +pydantic==2.7.* pypandoc==1.13.* python-dotenv==1.0.* regex==2023.12.25 diff --git a/bot/src/models.py b/bot/src/models.py new file mode 100644 index 0000000..b627a72 --- /dev/null +++ b/bot/src/models.py @@ -0,0 +1,78 @@ +from datetime import datetime +from typing import Optional + +from pydantic import BaseModel +from pydantic import Field + + +class GroupDiscordRole(BaseModel): + id: int + discord_id: int + description: str + + +class GroupProfile(BaseModel): + id: int + posix_name: str + description: str + group_type: str = Field(alias="type") + discord_roles: list[GroupDiscordRole] + + +class Group(BaseModel): + id: int + name: str + profile: GroupProfile + + +class Membership(BaseModel): + id: int + start_date: datetime + end_date: datetime + order: int + user: int + membership_type: str + is_valid: bool + + +class UserDiscordProfile(BaseModel): + id: int + discord_id: int + user: int + + +class DuskenUser(BaseModel): + id: int + username: str + email: str + first_name: str + last_name: str + phone_number: str + date_of_birth: Optional[datetime] + legacy_id: Optional[int] + place_of_study: Optional[int] + active_member_card: Optional[int] + is_volunteer: bool + is_member: bool + last_membership: Optional[Membership] + groups: list[Group] + discord_profile: Optional[UserDiscordProfile] + + +class BasicResponse(BaseModel): + count: int + next: Optional[str] + previous: Optional[str] + results: list + + +class Users(BasicResponse): + results: list[DuskenUser] + + +class DiscordProfiles(BasicResponse): + results: list[UserDiscordProfile] + + +class Groups(BasicResponse): + results: list[Group]