
- Setup project structure and FastAPI application - Create SQLAlchemy models for users, products, carts, and orders - Implement Alembic migrations - Add CRUD operations and endpoints for all resources - Setup authentication with JWT - Add role-based access control - Update documentation
52 lines
934 B
Python
52 lines
934 B
Python
from datetime import datetime
|
|
from typing import List
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from app.schemas.product import Product
|
|
|
|
|
|
# Shared properties
|
|
class CartItemBase(BaseModel):
|
|
product_id: int
|
|
quantity: int = Field(..., gt=0)
|
|
|
|
|
|
# Properties to receive on cart item creation
|
|
class CartItemCreate(CartItemBase):
|
|
pass
|
|
|
|
|
|
# Properties to receive on cart item update
|
|
class CartItemUpdate(BaseModel):
|
|
quantity: int = Field(..., gt=0)
|
|
|
|
|
|
class CartItemInDBBase(CartItemBase):
|
|
id: int
|
|
user_id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# Additional properties to return via API
|
|
class CartItem(CartItemInDBBase):
|
|
pass
|
|
|
|
|
|
# Additional properties stored in DB
|
|
class CartItemInDB(CartItemInDBBase):
|
|
pass
|
|
|
|
|
|
class CartItemWithProduct(CartItem):
|
|
product: Product
|
|
|
|
|
|
class Cart(BaseModel):
|
|
items: List[CartItemWithProduct]
|
|
total: float
|