79 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from typing import List
 | 
						|
 | 
						|
from pydantic import field_validator
 | 
						|
 | 
						|
from schemas.barcode import BarcodeTemplateSchema
 | 
						|
from schemas.base import BaseSchema, OkMessageSchema
 | 
						|
 | 
						|
 | 
						|
# 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
 | 
						|
    details: ClientDetailsSchema | None = None
 | 
						|
 | 
						|
 | 
						|
# 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 ClientCreateResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class ClientUpdateResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class ClientDeleteResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
# endregion
 |