from pydantic import BaseModel, Field
from typing import Optional, List


class ZoneBase(BaseModel):
    name: str = Field(..., max_length=255)


class ZoneCreate(ZoneBase):
    pass

class ZoneUpdateSchema(BaseModel):
    name: Optional[str] = Field(None, max_length=255)

class ZoneOutSchema(BaseModel):
    zone_id: int
    name: str

    class Config:
        from_attributes = True

class ZoneResponse(ZoneBase):
    zone_id: int

    class Config:
        from_attributes = True


class CityBase(BaseModel):
    name: str = Field(..., max_length=255)
    area_text: Optional[str] = Field(None, max_length=255)
    zone_id: int


class CityCreate(CityBase):
    pass


class CityResponse(CityBase):
    city_id: int

    class Config:
        from_attributes = True

class CityCreateSchema(BaseModel):
    name: str = Field(..., example="Київ")
    zone_id: int = Field(..., example=1)


class CityResponseSchema(BaseModel):
    city_id: int
    name: str
    zone_id: int
    zone_name: str

class CityUpdateSchema(BaseModel):
    name: Optional[str] = Field(None, example="Тернопіль")