Spaces:
Runtime error
Runtime error
File size: 2,481 Bytes
9aaec2c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | 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 |