74 lines
1.8 KiB
Python

from pydantic import BaseModel
from typing import Optional, List
from datetime import datetime
from decimal import Decimal
class ProductCreate(BaseModel):
name: str
slug: Optional[str] = None
description: str
price: float
discount_price: Optional[float] = None
category_id: int
model_id: Optional[int] = None
gender: str # men, women
brand: str
sizes: List[str]
colors: Optional[List[str]] = []
stock: int
images: List[str]
is_featured: bool = False
is_on_sale: bool = False
override_price: Optional[Decimal] = None
override_sizes: Optional[List[str]] = None
class ProductUpdate(BaseModel):
name: Optional[str] = None
slug: Optional[str] = None
description: Optional[str] = None
price: Optional[float] = None
discount_price: Optional[float] = None
category_id: Optional[int] = None
model_id: Optional[int] = None
gender: Optional[str] = None
brand: Optional[str] = None
sizes: Optional[List[str]] = None
colors: Optional[List[str]] = None
stock: Optional[int] = None
images: Optional[List[str]] = None
is_featured: Optional[bool] = None
is_on_sale: Optional[bool] = None
override_price: Optional[Decimal] = None
override_sizes: Optional[List[str]] = None
class ProductResponse(BaseModel):
id: int
name: str
slug: Optional[str]
description: str
price: float
discount_price: Optional[float]
category_id: int
model_id: Optional[int]
gender: str
brand: str
sizes: List[str]
colors: Optional[List[str]]
stock: int
images: List[str]
is_featured: bool
is_on_sale: bool
override_price: Optional[Decimal]
override_sizes: Optional[List[str]]
created_at: datetime
class Config:
from_attributes = True
class ProductDetailResponse(ProductResponse):
pass