from pydantic import BaseModel
from typing import List, Optional
from datetime import date

class FoodCategoryBase(BaseModel):
    name: str

class FoodCategoryCreate(FoodCategoryBase):
    pass

class FoodCategory(FoodCategoryBase):
    id: int
    class Config:
        orm_mode = True

class FoodBase(BaseModel):
    name: str
    category_id: int
    calories: float
    fats: float
    proteins: float
    carbs: float

class FoodCreate(FoodBase):
    pass

class Food(FoodBase):
    id: int
    category: FoodCategory
    class Config:
        orm_mode = True

class ClientBase(BaseModel):
    name: str
    email: str

class ClientCreate(ClientBase):
    pass

class Client(ClientBase):
    id: int
    class Config:
        orm_mode = True

class MealPlanBase(BaseModel):
    client_id: int
    name: str
    start_date: date

class MealPlanCreate(MealPlanBase):
    pass

class MealPlan(MealPlanBase):
    id: int
    class Config:
        orm_mode = True

class MealDayBase(BaseModel):
    mealplan_id: int
    day_of_week: str

class MealDayCreate(MealDayBase):
    pass

class MealDay(MealDayBase):
    id: int
    class Config:
        orm_mode = True

class MealBase(BaseModel):
    mealday_id: int
    name: str

class MealCreate(MealBase):
    pass

class Meal(MealBase):
    id: int
    class Config:
        orm_mode = True

class MealFoodBase(BaseModel):
    meal_id: int
    food_id: int
    quantity: float

class MealFoodCreate(MealFoodBase):
    pass

class MealFood(MealFoodBase):
    id: int
    class Config:
        orm_mode = True
