from pydantic import BaseModel
from typing import Optional, List


class TableGroupCreate(BaseModel):
    name: str
    prefix: Optional[str] = None
    color: Optional[str] = None


class TableGroupUpdate(BaseModel):
    name: Optional[str] = None
    prefix: Optional[str] = None
    color: Optional[str] = None


class TableGroupOut(BaseModel):
    id: int
    name: str
    prefix: Optional[str] = None
    sort_order: int = 0
    color: Optional[str] = None

    model_config = {"from_attributes": True}


class TableBase(BaseModel):
    label: Optional[str] = None
    group_id: Optional[int] = None
    is_active: bool = True


class TableCreate(BaseModel):
    label: Optional[str] = None
    group_id: Optional[int] = None


class TableBatchCreate(BaseModel):
    group_id: Optional[int] = None
    count: int
    name_prefix: str  # e.g. "TBL-" → TBL-1, TBL-2 ...
    # start_number is computed on the backend from existing tables in the group


class TableUpdate(BaseModel):
    label: Optional[str] = None
    group_id: Optional[int] = None
    is_active: Optional[bool] = None


class TableFloorplanUpdate(BaseModel):
    floor_x: float
    floor_y: float


class TableOut(BaseModel):
    id: int
    number: int
    label: Optional[str] = None
    group_id: Optional[int] = None
    is_active: bool = True
    floor_x: Optional[float] = None
    floor_y: Optional[float] = None
    group: Optional[TableGroupOut] = None
    has_active_order: bool = False

    model_config = {"from_attributes": True}
