96 lines
1.9 KiB
Python
96 lines
1.9 KiB
Python
from typing import List, Optional
|
|
|
|
from pydantic import field_validator
|
|
|
|
from schemas.barcode import BarcodeTemplateSchema
|
|
from schemas.base import BaseSchema, OkMessageSchema
|
|
from schemas.chat import ChatSchema
|
|
from schemas.residues import ResidualBoxSchema, ResidualPalletSchema
|
|
|
|
|
|
# region Entities
|
|
class ClientDetailsSchema(BaseSchema):
|
|
telegram: str | None = None
|
|
phone_number: str | None = None
|
|
inn: str | None = None
|
|
email: str | None = None
|
|
|
|
@field_validator("phone_number", "inn", "email", "telegram", mode="before")
|
|
def empty_string_to_none(cls, v):
|
|
return '' if v is None else v
|
|
|
|
|
|
class ClientSchema(BaseSchema):
|
|
id: int
|
|
name: str
|
|
company_name: str
|
|
barcode_template: BarcodeTemplateSchema | None = None
|
|
comment: Optional[str] = None
|
|
details: ClientDetailsSchema | None = None
|
|
chat: ChatSchema | None = None
|
|
|
|
|
|
class ClientDetailedSchema(ClientSchema):
|
|
pallets: List[ResidualPalletSchema] = []
|
|
boxes: List[ResidualBoxSchema] = []
|
|
|
|
# endregion
|
|
|
|
# region Requests
|
|
class ClientSearchRequest(BaseSchema):
|
|
name: str
|
|
|
|
|
|
class ClientUpdateDetailsRequest(BaseSchema):
|
|
client_id: int
|
|
details: ClientDetailsSchema
|
|
|
|
|
|
class ClientCreateRequest(BaseSchema):
|
|
data: ClientSchema
|
|
|
|
|
|
class ClientUpdateRequest(BaseSchema):
|
|
data: ClientSchema
|
|
|
|
|
|
class ClientDeleteRequest(BaseSchema):
|
|
client_id: int
|
|
|
|
|
|
# endregion
|
|
|
|
# region Responses
|
|
class ClientSearchResponse(BaseSchema):
|
|
clients: List[ClientSchema]
|
|
|
|
|
|
class ClientUpdateDetailsResponse(BaseSchema):
|
|
ok: bool
|
|
|
|
|
|
class ClientGetAllResponse(BaseSchema):
|
|
clients: List[ClientSchema]
|
|
|
|
|
|
class ClientGetResponse(BaseSchema):
|
|
client: ClientDetailedSchema
|
|
|
|
|
|
class ClientCreateResponse(OkMessageSchema):
|
|
pass
|
|
|
|
|
|
class ClientUpdateResponse(OkMessageSchema):
|
|
pass
|
|
|
|
|
|
class ClientDeleteResponse(OkMessageSchema):
|
|
pass
|
|
|
|
|
|
class CreateGuestUrlResponse(OkMessageSchema):
|
|
url: str
|
|
|
|
# endregion
|