from sqlalchemy import Column, Integer, String, Boolean, DateTime, ForeignKey, Table
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from app.database import Base


position_slot_types = Table(
    "position_slot_types",
    Base.metadata,
    Column("position_slot_id", Integer, ForeignKey("position_slots.id"), primary_key=True),
    Column("position_type_code", String, ForeignKey("position_types.code"), primary_key=True),
)


class PositionSlot(Base):
    __tablename__ = "position_slots"
    id         = Column(Integer, primary_key=True, index=True)
    area_id    = Column(Integer, ForeignKey("areas.id"), nullable=False)
    nomor      = Column(String, nullable=False)
    sort_order = Column(Integer, default=0)
    is_active  = Column(Boolean, default=True)
    created_at = Column(DateTime(timezone=True), server_default=func.now())

    area           = relationship("Area", back_populates="posisi_list")
    position_types = relationship("PositionType", secondary=position_slot_types)
