from typing import List from pydantic import validator, field_validator from schemas.base import CustomModelCamel, OkMessageSchema # region Entities class ClientDetailsSchema(CustomModelCamel): address: str | None = None phone_number: str | None = None inn: str | None = None email: str | None = None @field_validator("phone_number", "inn", "email", "address", mode="before") def empty_string_to_none(cls, v): return '' if v is None else v class ClientSchema(CustomModelCamel): id: int name: str details: ClientDetailsSchema | None = None # endregion # region Requests class ClientSearchRequest(CustomModelCamel): name: str class ClientUpdateDetailsRequest(CustomModelCamel): client_id: int details: ClientDetailsSchema class ClientCreateRequest(CustomModelCamel): data: ClientSchema class ClientUpdateRequest(CustomModelCamel): data: ClientSchema class ClientDeleteRequest(CustomModelCamel): client_id: int # endregion # region Responses class ClientSearchResponse(CustomModelCamel): clients: List[ClientSchema] class ClientUpdateDetailsResponse(CustomModelCamel): ok: bool class ClientGetAllResponse(CustomModelCamel): clients: List[ClientSchema] class ClientCreateResponse(OkMessageSchema): pass class ClientUpdateResponse(OkMessageSchema): pass class ClientDeleteResponse(OkMessageSchema): pass # endregion