From 0439ccd6d942a4eb3cf24f813ccd06741d78ec02 Mon Sep 17 00:00:00 2001 From: Kirill Date: Sun, 22 Mar 2026 16:52:42 +0300 Subject: [PATCH] fix(models): added working categories and products model --- module/category.py | 36 +++++++++--------------- module/filters.py | 24 ---------------- module/product.py | 60 ++++++++++++---------------------------- module/productFilters.py | 22 --------------- 4 files changed, 31 insertions(+), 111 deletions(-) delete mode 100644 module/filters.py delete mode 100644 module/productFilters.py diff --git a/module/category.py b/module/category.py index c9bc154..301df1c 100644 --- a/module/category.py +++ b/module/category.py @@ -1,30 +1,20 @@ +from typing import List, Optional, Dict, Any from pydantic import BaseModel -from typing import Optional -from datetime import datetime + +class AttributeValue(BaseModel): + id: int + val: str + +class Attribute(BaseModel): + id: int + name: str + vals: List[AttributeValue] class Category(BaseModel): id: int name: str - description: Optional[str] = None - image_path: Optional[str] = None - + image: Optional[str] = None + atributes: List[Attribute] = [] + class Config: from_attributes = True - - -class CategoryCreate(BaseModel): - name: str - description: Optional[str] = None - parent_id: Optional[int] = None - image_path: Optional[str] = None - page_number: int = 1 - created_at: datetime = None - - -class CategoryUpdate(BaseModel): - name: Optional[str] = None - description: Optional[str] = None - parent_id: Optional[int] = None - image_path: Optional[str] = None - page_number: Optional[int] = None - created_at: datetime = None diff --git a/module/filters.py b/module/filters.py deleted file mode 100644 index faa4510..0000000 --- a/module/filters.py +++ /dev/null @@ -1,24 +0,0 @@ -from pydantic import BaseModel -from typing import Optional - - -class Filter(BaseModel): - id: int - name: str - filter_key: str - filter_type: str - - class Config: - from_attributes = True - - -class FilterCreate(BaseModel): - name: str - filter_key: str - filter_type: str - - -class FilterUpdate(BaseModel): - name: Optional[str] = None - filter_key: Optional[str] = None - filter_type: Optional[str] = None diff --git a/module/product.py b/module/product.py index 8bd2f45..db34bdf 100644 --- a/module/product.py +++ b/module/product.py @@ -1,53 +1,29 @@ +from typing import List, Optional, Dict, Any from pydantic import BaseModel -from typing import Optional -from datetime import datetime +class ProductAttributes(BaseModel): + color: Optional[str] = None + amount: Optional[str] = None + size: Optional[str] = None + diameter: Optional[int] = None + wall_thickness: Optional[float] = None + length: Optional[int] = None + stiffness_class: Optional[str] = None + application_type: Optional[str] = None class Product(BaseModel): id: int name: str - full_name: str description: Optional[str] = None - category_id: int - diameter: Optional[int] = None - wall_thickness: Optional[float] = None - length: Optional[int] = None - color: Optional[str] = None - application_type: Optional[str] = None - stiffness_class: Optional[str] = None - image_path: Optional[str] = None - page_number: int = 1 - created_at: datetime - + price: Optional[float] = None + categoryId: int + images: List[str] = [] + attributes: ProductAttributes = ProductAttributes() + inStock: bool = True + class Config: from_attributes = True - -class ProductCreate(BaseModel): - name: str - full_name: str - description: Optional[str] = None - category_id: int - diameter: Optional[int] = None - wall_thickness: Optional[float] = None - length: Optional[int] = None - color: Optional[str] = None - application_type: Optional[str] = None - stiffness_class: Optional[str] = None - image_path: Optional[str] = None - page_number: int = 1 - - -class ProductUpdate(BaseModel): - name: Optional[str] = None +class ProductDetail(Product): full_name: Optional[str] = None - description: Optional[str] = None - category_id: Optional[int] = None - diameter: Optional[int] = None - wall_thickness: Optional[float] = None - length: Optional[int] = None - color: Optional[str] = None - application_type: Optional[str] = None - stiffness_class: Optional[str] = None - image_path: Optional[str] = None - page_number: Optional[int] = None + created_at: Optional[str] = None diff --git a/module/productFilters.py b/module/productFilters.py deleted file mode 100644 index 625db5e..0000000 --- a/module/productFilters.py +++ /dev/null @@ -1,22 +0,0 @@ -from pydantic import BaseModel -from typing import Optional - - -class ProductFilter(BaseModel): - id: int - product_id: int - filter_key: str - value: str - - class Config: - from_attributes = True - - -class ProductFilterCreate(BaseModel): - product_id: int - filter_key: str - value: str - - -class ProductFilterUpdate(BaseModel): - value: Optional[str] = None