from datetime import datetime
from uuid import UUID
from typing import Optional

from pydantic import BaseModel, Field
from src.apps.base.schemas.common import BaseSchema

# ---------- Region Schemas ----------

class RegionBaseSchema(BaseSchema):
    name: str = Field(..., example="Burgundy")
    region_code: str = Field(..., example="BG")
    country_id: Optional[int] = Field(None, example=1)


class RegionCreateSchema(RegionBaseSchema):
    pass


class RegionUpdateSchema(BaseSchema):
    name: Optional[str] = Field(None, example="Burgundy")
    region_code: Optional[str] = Field(None, example="BG")
    country_id: Optional[int] = Field(None, example=1)


class RegionOutSchema(RegionBaseSchema):
    id: int
    created_at: Optional[datetime] = None
    updated_at: Optional[datetime] = None

class RegionFilterSchema(BaseModel):
    country_id: Optional[int] = None
 

# ---------- SubRegion Schemas ----------

class SubRegionBaseSchema(BaseSchema):
    name: str = Field(..., example="Chablis")


class SubRegionCreateSchema(SubRegionBaseSchema):
    region_id: Optional[int] = Field(None, example=1)

class SubRegionUpdateSchema(BaseSchema):
    name: Optional[str] = Field(None, example="Chablis")
    region_id: Optional[int] = Field(None, example=1)


class SubRegionOutSchema(SubRegionBaseSchema):
    id: int
    created_at: Optional[datetime] = None
    updated_at: Optional[datetime] = None
    region: Optional[RegionOutSchema] = None
    
class SubRegionFilterSchema(BaseModel):
    region_id: Optional[int] = None
