from typing import List
from pydantic import BaseModel, Field
from typing import Optional
from decimal import Decimal
from datetime import datetime
from src.apps.base.schemas.common import BaseSchema
from src.apps.base.schemas.country import CountryOutSchema
from src.apps.base.schemas.region import RegionOutSchema
from src.apps.wine.appellation.schemas.appellation import AppellationOutputSchema
from src.utils.constants import MAX_PER_PAGE,DEFAULT_PER_PAGE

class SubAppellationSchema(BaseSchema):
    name: Optional[str] = Field(None, example="Napa Valley")
    appellation_id: Optional[int] = Field(None, example=1)
    country_id: Optional[int] = Field(None, example=1)
    region_id: Optional[int] = Field(None, example=1)
    sub_region_id: Optional[int] = Field(None, example=1)
    
class SubAppellationCreateSchema(SubAppellationSchema):
    pass

class SubAppellationUpdateSchema(SubAppellationSchema):
    pass

class SubAppellationOutputSchema(SubAppellationSchema):
    id: Optional[int] = None
    appellation: Optional[AppellationOutputSchema] = None
    country: Optional[CountryOutSchema] = None 
    region: Optional[RegionOutSchema] = None  
    date_created: Optional[datetime] = None
    last_updated: Optional[datetime] = None