from typing import List from schemas.base import BaseSchema, OkMessageSchema # region Entities class BarcodeTemplateAttributeSchema(BaseSchema): id: int key: str name: str class BarcodeTemplateSizeSchema(BaseSchema): id: int name: str key: str width: int height: int class BarcodeTemplateAdditionalAttributeSchema(BaseSchema): name: str value: str class BaseBarcodeTemplateSchema(BaseSchema): 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(BaseSchema): name: str value: str class BarcodeSchema(BaseSchema): barcode: str attributes: List[BarcodeAttributeSchema] additional_field: str | None = None # endregion # region Requests class GetBarcodeTemplateByIdRequest(BaseSchema): id: int class BarcodeTemplateCreateResponse(OkMessageSchema): id: int class BarcodeTemplateUpdateResponse(OkMessageSchema): pass class CreateBarcodeTemplateAttributeRequest(BaseSchema): name: str label: str class BarcodeTemplateDeleteRequest(BaseSchema): id: int class GetProductBarcodeRequest(BaseSchema): product_id: int barcode: str barcode_template_id: int | None = None class GetProductBarcodePdfRequest(GetProductBarcodeRequest): quantity: int # endregion # region Responses class GetBarcodeTemplateByIdResponse(BaseSchema): 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(BaseSchema): templates: list[BarcodeTemplateSchema] class GetAllBarcodeTemplateAttributesResponse(BaseSchema): attributes: list[BarcodeTemplateAttributeSchema] class BarcodeTemplateDeleteResponse(OkMessageSchema): pass class GetProductBarcodeResponse(BaseSchema): barcode: BarcodeSchema class GetAllBarcodeTemplateSizesResponse(BaseSchema): sizes: list[BarcodeTemplateSizeSchema] class GetProductBarcodePdfResponse(BaseSchema): base64_string: str filename: str mime_type: str # endregion