40 lines
1.1 KiB
Python

from typing import Optional
from pydantic import Field, condecimal
from app.schemas.base import BaseSchema, BaseSchemaIDTimestamps
class ProductBase(BaseSchema):
"""Base schema for product."""
name: str
description: Optional[str] = None
price: condecimal(ge=0, decimal_places=2) = Field(..., description="Product price")
sku: Optional[str] = None
is_service: bool = False
tax_rate: condecimal(ge=0, decimal_places=2) = Field(0, description="Tax rate in percentage")
class ProductCreate(ProductBase):
"""Schema for creating a product."""
pass
class ProductUpdate(BaseSchema):
"""Schema for updating a product."""
name: Optional[str] = None
description: Optional[str] = None
price: Optional[condecimal(ge=0, decimal_places=2)] = None
sku: Optional[str] = None
is_service: Optional[bool] = None
tax_rate: Optional[condecimal(ge=0, decimal_places=2)] = None
class ProductInDBBase(ProductBase, BaseSchemaIDTimestamps):
"""Base schema for product in database."""
user_id: int
class Product(ProductInDBBase):
"""Schema for product."""
pass