import uuid

from sqlmodel import Field, SQLModel

from app.db.base import TenantModel


class ZoneBase(SQLModel):
    name: str = Field(nullable=False)
    display_order: int = Field(default=0, nullable=False)
    icon: str | None = Field(default=None, nullable=True)


class Zone(ZoneBase, TenantModel, table=True):
    __tablename__ = "zone"  # pyright: ignore[reportAssignmentType]

    id: str = Field(
        default_factory=lambda: str(uuid.uuid4()),
        primary_key=True,
    )


class ZoneCreate(ZoneBase):
    pass


class ZoneRead(ZoneBase):
    id: str
    restaurant_id: str


class ZoneUpdate(ZoneBase):
    pass
