55 lines
1.3 KiB
Python

from typing import List, Optional
from pydantic import BaseModel, Field, HttpUrl
class ProductBase(BaseModel):
"""Base schema for product data."""
name: str
description: Optional[str] = None
price: float = Field(gt=0)
stock: int = Field(ge=0, default=0)
image_url: Optional[HttpUrl] = None
anime_title: Optional[str] = None
character_name: Optional[str] = None
class ProductCreate(ProductBase):
"""Schema for creating a new product."""
category_ids: List[int] = []
class ProductUpdate(BaseModel):
"""Schema for updating a product."""
name: Optional[str] = None
description: Optional[str] = None
price: Optional[float] = Field(gt=0, default=None)
stock: Optional[int] = Field(ge=0, default=None)
image_url: Optional[HttpUrl] = None
anime_title: Optional[str] = None
character_name: Optional[str] = None
category_ids: Optional[List[int]] = None
class CategoryInProduct(BaseModel):
"""Schema for category data in product responses."""
id: int
name: str
class Config:
from_attributes = True
class ProductResponse(ProductBase):
"""Schema for product responses."""
id: int
categories: List[CategoryInProduct] = []
class Config:
from_attributes = True