Add Food schema

This commit is contained in:
Backend IM Bot 2025-03-28 15:59:14 +00:00
parent ea4ee774e6
commit 577d40634b

View File

@ -1,28 +1,38 @@
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from typing import Optional, Union from typing import Optional
from uuid import UUID
# Base schema
class FoodBase(BaseModel): class FoodBase(BaseModel):
name: str = Field(..., description="Name of the food item") name: str = Field(..., description="Name of the food item")
description: Optional[str] = Field(None, description="Description of the food item") description: Optional[str] = Field(None, description="Description of the food item")
price: float = Field(..., gt=0, description="Price of the food item") price: float = Field(..., gt=0, description="Price of the food item")
is_available: bool = Field(True, description="Availability status of the food item") category_id: UUID = Field(..., description="ID of the food category")
category: Optional[str] = Field(None, description="Category of the food item")
cuisine: Optional[str] = Field(None, description="Cuisine of the food item")
allergens: Optional[Union[list, dict]] = Field(None, description="Allergens present in the food item")
# Schema for creating a new Food
class FoodCreate(FoodBase): class FoodCreate(FoodBase):
pass
class FoodResponse(FoodBase):
class Config: class Config:
schema_extra = { schema_extra = {
"example": { "example": {
"name": "Margherita Pizza", "name": "Pizza Margherita",
"description": "Classic Italian pizza with tomato sauce, mozzarella cheese, and fresh basil", "description": "Classic Italian pizza with tomato sauce, mozzarella, and basil",
"price": 12.99, "price": 12.99,
"is_available": True, "category_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
"category": "Pizza", }
"cuisine": "Italian", }
"allergens": ["dairy", "wheat"]
# Schema for Food responses
class Food(FoodBase):
id: UUID
class Config:
orm_mode = True
schema_extra = {
"example": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Pizza Margherita",
"description": "Classic Italian pizza with tomato sauce, mozzarella, and basil",
"price": 12.99,
"category_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
} }
} }