Init project
This commit is contained in:
74
birthday_pool_bot/dto.py
Normal file
74
birthday_pool_bot/dto.py
Normal file
@@ -0,0 +1,74 @@
|
||||
import enum
|
||||
import uuid
|
||||
from datetime import date
|
||||
from typing import Annotated
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
from pydantic_extra_types.phone_numbers import PhoneNumberValidator
|
||||
from pydantic_filters import BaseFilter
|
||||
|
||||
|
||||
PhoneNumber = Annotated[str, PhoneNumberValidator(number_format="E164")]
|
||||
|
||||
|
||||
class BankEnum(enum.Enum):
|
||||
T_BANK = "t-bank"
|
||||
SBER = "sber"
|
||||
ALFA_BANK = "alfa-bank"
|
||||
|
||||
|
||||
class PaymentData(BaseModel):
|
||||
phone: PhoneNumber
|
||||
bank: BankEnum
|
||||
|
||||
|
||||
class User(BaseModel):
|
||||
id: uuid.UUID = Field(default_factory=uuid.uuid4)
|
||||
name: str | None = None
|
||||
birthday: date | None = None
|
||||
gift_payment_data: PaymentData | None = None
|
||||
phone: PhoneNumber | None = None
|
||||
telegram_id: int | None = None
|
||||
|
||||
|
||||
class UserFilter(BaseFilter):
|
||||
id: set[uuid.UUID]
|
||||
id__gt: uuid.UUID
|
||||
phone: set[PhoneNumber]
|
||||
telegram_id: set[int]
|
||||
|
||||
|
||||
class Pool(BaseModel):
|
||||
id: uuid.UUID = Field(default_factory=uuid.uuid4)
|
||||
owner_id: uuid.UUID
|
||||
birthday_user_id: uuid.UUID
|
||||
description: str | None = None
|
||||
payment_data: PaymentData
|
||||
|
||||
owner: User | None = None
|
||||
|
||||
|
||||
class PoolFilter(BaseFilter):
|
||||
id: set[uuid.UUID]
|
||||
id__gt: uuid.UUID
|
||||
owner_id: set[uuid.UUID]
|
||||
birthday_user_id: set[uuid.UUID]
|
||||
|
||||
|
||||
class Subscription(BaseModel):
|
||||
from_user_id: uuid.UUID
|
||||
to_user_id: uuid.UUID
|
||||
name: str
|
||||
pool_id: uuid.UUID | None = None
|
||||
|
||||
from_user: User | None = None
|
||||
to_user: User | None = None
|
||||
pool: Pool | None = None
|
||||
|
||||
|
||||
class SubscriptionFilter(BaseFilter):
|
||||
from_user_id: set[uuid.UUID]
|
||||
from_user_id__gt: uuid.UUID
|
||||
to_user_id: set[uuid.UUID]
|
||||
to_user_id__gt: uuid.UUID
|
||||
pool_id: set[uuid.UUID]
|
||||
Reference in New Issue
Block a user