remove intermediate grocery table and add related_products feature
This commit is contained in:
@@ -60,31 +60,10 @@ class GroceryCategory(GroceryCategoryBase):
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
# Grocery schemas
|
||||
class GroceryBase(BaseModel):
|
||||
name: str
|
||||
category_id: int
|
||||
|
||||
class GroceryCreate(GroceryBase):
|
||||
pass
|
||||
|
||||
class GroceryUpdate(BaseModel):
|
||||
name: Optional[str] = None
|
||||
category_id: Optional[int] = None
|
||||
|
||||
class Grocery(GroceryBase):
|
||||
id: int
|
||||
created_at: datetime
|
||||
updated_at: Optional[datetime] = None
|
||||
category: GroceryCategory
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
# Base schemas
|
||||
# Product schemas
|
||||
class ProductBase(BaseModel):
|
||||
name: str
|
||||
grocery_id: int
|
||||
category_id: int
|
||||
brand_id: Optional[int] = None
|
||||
organic: bool = False
|
||||
weight: Optional[float] = None
|
||||
@@ -95,7 +74,7 @@ class ProductCreate(ProductBase):
|
||||
|
||||
class ProductUpdate(BaseModel):
|
||||
name: Optional[str] = None
|
||||
grocery_id: Optional[int] = None
|
||||
category_id: Optional[int] = None
|
||||
brand_id: Optional[int] = None
|
||||
organic: Optional[bool] = None
|
||||
weight: Optional[float] = None
|
||||
@@ -105,7 +84,7 @@ class Product(ProductBase):
|
||||
id: int
|
||||
created_at: datetime
|
||||
updated_at: Optional[datetime] = None
|
||||
grocery: Grocery
|
||||
category: GroceryCategory
|
||||
brand: Optional[Brand] = None
|
||||
|
||||
class Config:
|
||||
@@ -142,7 +121,7 @@ class ProductInEvent(BaseModel):
|
||||
class ProductWithEventData(BaseModel):
|
||||
id: int
|
||||
name: str
|
||||
grocery: Grocery
|
||||
category: GroceryCategory
|
||||
brand: Optional[Brand] = None
|
||||
organic: bool
|
||||
weight: Optional[float] = None
|
||||
@@ -193,4 +172,30 @@ class ShopStats(BaseModel):
|
||||
avg_per_visit: float
|
||||
|
||||
# Update forward references
|
||||
BrandInShop.model_rebuild()
|
||||
BrandInShop.model_rebuild()
|
||||
|
||||
# Related Products schemas
|
||||
class RelatedProductBase(BaseModel):
|
||||
product_id: int
|
||||
related_product_id: int
|
||||
relationship_type: Optional[str] = None
|
||||
|
||||
class RelatedProductCreate(RelatedProductBase):
|
||||
pass
|
||||
|
||||
class RelatedProductUpdate(BaseModel):
|
||||
relationship_type: Optional[str] = None
|
||||
|
||||
class RelatedProduct(RelatedProductBase):
|
||||
id: int
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
# Product with related products
|
||||
class ProductWithRelated(Product):
|
||||
related_products: List["Product"] = []
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
Reference in New Issue
Block a user