chefcode / backend /schemas.py
Mariem-Daha's picture
Upload 31 files
9aaec2c verified
from pydantic import BaseModel, field_validator
from typing import List, Optional, Dict, Any
from datetime import date
# Request/Response models for API
class InventoryItemCreate(BaseModel):
name: str
unit: str = "pz"
quantity: float = 0.0
category: str = "Other"
price: float = 0.0
lot_number: Optional[str] = None
expiry_date: Optional[date] = None
@field_validator('expiry_date')
@classmethod
def expiry_date_cannot_be_past(cls, v: Optional[date]) -> Optional[date]:
if v is not None and v < date.today():
raise ValueError('Expiry date cannot be in the past')
return v
class InventoryItemResponse(BaseModel):
id: int
name: str
unit: str
quantity: float
category: str
price: float
lot_number: Optional[str] = None
expiry_date: Optional[date] = None
class Config:
from_attributes = True
class RecipeItem(BaseModel):
name: str
qty: float
unit: str
class RecipeCreate(BaseModel):
name: str
items: List[RecipeItem]
instructions: Optional[str] = ""
class RecipeResponse(BaseModel):
id: int
name: str
items: List[RecipeItem]
instructions: str
class Config:
from_attributes = True
class TaskCreate(BaseModel):
recipe: str
quantity: int = 1
assigned_to: Optional[str] = ""
status: str = "todo"
class TaskResponse(BaseModel):
id: int
recipe: str
quantity: int
assigned_to: str
status: str
class Config:
from_attributes = True
class ChatRequest(BaseModel):
prompt: str
class ChatResponse(BaseModel):
choices: List[Dict[str, Any]]
class ActionRequest(BaseModel):
action: str
data: Dict[Any, Any]
class SyncDataRequest(BaseModel):
inventory: Optional[List[Dict[str, Any]]] = []
recipes: Optional[Dict[str, Dict[str, Any]]] = {}
tasks: Optional[List[Dict[str, Any]]] = []
class InventoryItemUpdate(BaseModel):
name: Optional[str] = None
unit: Optional[str] = None
quantity: Optional[float] = None
category: Optional[str] = None
price: Optional[float] = None
lot_number: Optional[str] = None
expiry_date: Optional[date] = None
@field_validator('expiry_date')
@classmethod
def expiry_date_cannot_be_past(cls, v: Optional[date]) -> Optional[date]:
if v is not None and v < date.today():
raise ValueError('Expiry date cannot be in the past')
return v