75 lines
1.1 KiB
Python
75 lines
1.1 KiB
Python
from typing import Optional
|
|
|
|
from schemas.base import BaseSchema, BaseResponse
|
|
|
|
|
|
# region Entities
|
|
|
|
|
|
class ClientDetailsSchema(BaseSchema):
|
|
telegram: str
|
|
phone_number: str
|
|
inn: str
|
|
email: str
|
|
|
|
|
|
class CreateClientSchema(BaseSchema):
|
|
name: str
|
|
company_name: str
|
|
comment: Optional[str] = ""
|
|
details: ClientDetailsSchema
|
|
|
|
|
|
class ClientSchema(CreateClientSchema):
|
|
id: int
|
|
|
|
|
|
class UpdateClientSchema(BaseSchema):
|
|
name: Optional[str] = None
|
|
company_name: Optional[str] = None
|
|
comment: Optional[str] = None
|
|
details: Optional[ClientDetailsSchema] = None
|
|
|
|
|
|
# endregion
|
|
|
|
# region Requests
|
|
|
|
|
|
class ClientUpdateDetailsRequest(BaseSchema):
|
|
client_id: int
|
|
details: ClientDetailsSchema
|
|
|
|
|
|
class CreateClientRequest(BaseSchema):
|
|
entity: CreateClientSchema
|
|
|
|
|
|
class UpdateClientRequest(BaseSchema):
|
|
entity: UpdateClientSchema
|
|
|
|
|
|
# endregion
|
|
|
|
|
|
# region Responses
|
|
|
|
|
|
class GetClientsResponse(BaseSchema):
|
|
items: list[ClientSchema]
|
|
|
|
|
|
class UpdateClientResponse(BaseResponse):
|
|
pass
|
|
|
|
|
|
class CreateClientResponse(BaseResponse):
|
|
pass
|
|
|
|
|
|
class DeleteClientResponse(BaseResponse):
|
|
pass
|
|
|
|
|
|
# endregion
|