from typing import List from schemas.base import CustomModelCamel, OkMessageSchema # region Entities class BarcodeTemplateAttributeSchema(CustomModelCamel): id: int key: str name: str class BarcodeTemplateSizeSchema(CustomModelCamel): id: int name: str key: str width: int height: int class BarcodeTemplateAdditionalAttributeSchema(CustomModelCamel): name: str value: str class BaseBarcodeTemplateSchema(CustomModelCamel): name: str is_default: bool size: BarcodeTemplateSizeSchema additional_attributes: list[BarcodeTemplateAdditionalAttributeSchema] additional_field: str | None = None class BarcodeTemplateSchema(BaseBarcodeTemplateSchema): id: int attributes: list[BarcodeTemplateAttributeSchema] class BarcodeAttributeSchema(CustomModelCamel): name: str value: str class BarcodeSchema(CustomModelCamel): barcode: str attributes: List[BarcodeAttributeSchema] additional_field: str | None = None # endregion # region Requests class GetBarcodeTemplateByIdRequest(CustomModelCamel): id: int class BarcodeTemplateCreateResponse(OkMessageSchema): id: int class BarcodeTemplateUpdateResponse(OkMessageSchema): pass class CreateBarcodeTemplateAttributeRequest(CustomModelCamel): name: str label: str class BarcodeTemplateDeleteRequest(CustomModelCamel): id: int class GetProductBarcodeRequest(CustomModelCamel): product_id: int barcode: str barcode_template_id: int | None = None class GetProductBarcodePdfRequest(GetProductBarcodeRequest): quantity: int # endregion # region Responses class GetBarcodeTemplateByIdResponse(CustomModelCamel): barcode_template: BarcodeTemplateSchema class BarcodeTemplateCreateRequest(BaseBarcodeTemplateSchema): attribute_ids: list[int] class BarcodeTemplateUpdateRequest(BaseBarcodeTemplateSchema): id: int attribute_ids: list[int] class CreateBarcodeTemplateAttributeResponse(OkMessageSchema): id: int class GetAllBarcodeTemplatesResponse(CustomModelCamel): templates: list[BarcodeTemplateSchema] class GetAllBarcodeTemplateAttributesResponse(CustomModelCamel): attributes: list[BarcodeTemplateAttributeSchema] class BarcodeTemplateDeleteResponse(OkMessageSchema): pass class GetProductBarcodeResponse(CustomModelCamel): barcode: BarcodeSchema class GetAllBarcodeTemplateSizesResponse(CustomModelCamel): sizes: list[BarcodeTemplateSizeSchema] class GetProductBarcodePdfResponse(CustomModelCamel): base64_string: str filename: str mime_type: str # endregion