aboutsummaryrefslogtreecommitdiff
path: root/models/user.py
diff options
context:
space:
mode:
Diffstat (limited to 'models/user.py')
-rw-r--r--models/user.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/models/user.py b/models/user.py
index 690083c..896ff3b 100644
--- a/models/user.py
+++ b/models/user.py
@@ -1,11 +1,44 @@
1from datetime import datetime 1from datetime import datetime
2from enum import IntEnum 2from enum import IntEnum
3from typing import Self
3 4
5from aiogram.types import Chat
6from aiogram.types import User as TgUser
7from pydantic import BaseModel
4from sqlalchemy.orm import Mapped, mapped_column 8from sqlalchemy.orm import Mapped, mapped_column
5 9
6from models import BaseTable 10from models import BaseTable
7 11
8 12
13class UserCache(BaseModel):
14 id: int
15 username: str | None = None
16 full_name: str
17
18 @classmethod
19 def from_chat(cls, chat: Chat) -> Self:
20 return cls(
21 id=chat.id,
22 username=chat.username,
23 full_name=chat.full_name,
24 )
25
26 @classmethod
27 def from_user(cls, user: TgUser) -> Self:
28 return cls(
29 id=user.id,
30 username=user.username,
31 full_name=user.full_name,
32 )
33
34 @property
35 def mention(self) -> str:
36 if self.username is not None:
37 return f'<a href="tg://{self.username}">{self.full_name}</a>'
38 else:
39 return f'<a href="tg://user?id={self.id}">{self.full_name}</a>'
40
41
9class UserRole(IntEnum): 42class UserRole(IntEnum):
10 REGULAR = 0 43 REGULAR = 0
11 ADMIN = 1 44 ADMIN = 1