78 lines
1.3 KiB
Python
78 lines
1.3 KiB
Python
from typing import Optional
|
|
|
|
from schemas.base import BaseSchema, BaseResponse
|
|
|
|
|
|
# region Entity
|
|
|
|
|
|
class ProductImageSchema(BaseSchema):
|
|
id: int
|
|
product_id: int
|
|
image_url: str
|
|
|
|
|
|
class CreateProductSchema(BaseSchema):
|
|
name: str
|
|
article: str
|
|
factory_article: str
|
|
brand: Optional[str]
|
|
color: Optional[str]
|
|
composition: Optional[str]
|
|
size: Optional[str]
|
|
additional_info: Optional[str]
|
|
|
|
|
|
class ProductSchema(CreateProductSchema):
|
|
id: int
|
|
|
|
|
|
class UpdateProductSchema(BaseSchema):
|
|
name: Optional[str] = None
|
|
article: Optional[str] = None
|
|
factory_article: Optional[str] = None
|
|
brand: Optional[str] = None
|
|
color: Optional[str] = None
|
|
composition: Optional[str] = None
|
|
size: Optional[str] = None
|
|
additional_info: Optional[str] = None
|
|
|
|
images: list[ProductImageSchema] | None = []
|
|
|
|
|
|
# endregion
|
|
|
|
# region Request
|
|
|
|
|
|
class CreateProductRequest(BaseSchema):
|
|
entity: CreateProductSchema
|
|
|
|
|
|
class UpdateProductRequest(BaseSchema):
|
|
entity: UpdateProductSchema
|
|
|
|
|
|
# endregion
|
|
|
|
# region Response
|
|
|
|
|
|
class GetProductsResponse(BaseSchema):
|
|
items: list[ProductSchema]
|
|
|
|
|
|
class CreateProductResponse(BaseResponse):
|
|
entity: ProductSchema
|
|
|
|
|
|
class UpdateProductResponse(BaseResponse):
|
|
pass
|
|
|
|
|
|
class DeleteProductResponse(BaseResponse):
|
|
pass
|
|
|
|
|
|
# endregion
|