from sqlalchemy import Column, Integer, String, Boolean, Float, ForeignKey
from sqlalchemy.orm import relationship
from database import Base


class TableGroup(Base):
    __tablename__ = "table_groups"

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String, nullable=False, unique=True)
    prefix = Column(String, nullable=True)
    sort_order = Column(Integer, default=0)
    color = Column(String, nullable=True)

    tables = relationship("Table", back_populates="group")
    waiter_zones = relationship("WaiterZone", back_populates="group")


class Table(Base):
    __tablename__ = "tables"

    id = Column(Integer, primary_key=True, index=True)
    number = Column(Integer, nullable=False)
    label = Column(String, nullable=True)
    group_id = Column(Integer, ForeignKey("table_groups.id"), nullable=True)
    is_active = Column(Boolean, default=True, nullable=False)
    floor_x = Column(Float, nullable=True)
    floor_y = Column(Float, nullable=True)

    group = relationship("TableGroup", back_populates="tables")
    orders = relationship("Order", back_populates="table")
