diff --git a/schemas/foodmenu.py b/schemas/foodmenu.py new file mode 100644 index 0000000..a78aac3 --- /dev/null +++ b/schemas/foodmenu.py @@ -0,0 +1,53 @@ +from pydantic import BaseModel, Field +from typing import Optional +from decimal import Decimal + +class FoodMenuBase(BaseModel): + name: str = Field(..., min_length=1, max_length=100, description="Name of the menu item") + description: Optional[str] = Field(None, max_length=500, description="Description of the menu item") + price: Decimal = Field(..., ge=0, decimal_places=2, max_digits=10, description="Price of the menu item") + category: str = Field(..., min_length=1, max_length=50, description="Category of the menu item") + is_available: bool = Field(default=True, description="Availability status of the menu item") + preparation_time: Optional[int] = Field(None, ge=0, description="Preparation time in minutes") + calories: Optional[int] = Field(None, ge=0, description="Caloric content") + ingredients: Optional[str] = Field(None, max_length=500, description="List of ingredients") + allergens: Optional[str] = Field(None, max_length=200, description="List of allergens") + image_url: Optional[str] = Field(None, max_length=255, description="URL of the menu item image") + +class FoodMenuCreate(FoodMenuBase): + class Config: + schema_extra = { + "example": { + "name": "Margherita Pizza", + "description": "Classic Italian pizza with tomatoes and mozzarella", + "price": "12.99", + "category": "Pizza", + "is_available": True, + "preparation_time": 20, + "calories": 800, + "ingredients": "Dough, tomatoes, mozzarella, basil", + "allergens": "Gluten, dairy", + "image_url": "https://example.com/images/margherita.jpg" + } + } + +class FoodMenuResponse(FoodMenuBase): + id: int = Field(..., description="Unique identifier for the menu item") + + class Config: + orm_mode = True + schema_extra = { + "example": { + "id": 1, + "name": "Margherita Pizza", + "description": "Classic Italian pizza with tomatoes and mozzarella", + "price": "12.99", + "category": "Pizza", + "is_available": True, + "preparation_time": 20, + "calories": 800, + "ingredients": "Dough, tomatoes, mozzarella, basil", + "allergens": "Gluten, dairy", + "image_url": "https://example.com/images/margherita.jpg" + } + } \ No newline at end of file