from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, UniqueConstraint
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship

from database import Base


class District(Base):
    __tablename__ = "districts"
    __table_args__ = (
        UniqueConstraint("name", "state_id", name="uq_district_name_per_state"),
    )

    id = Column(Integer, primary_key=True, index=True, autoincrement=True)
    name = Column(String(100), nullable=False)
    state_id = Column(
        Integer,
        ForeignKey("states.id", ondelete="CASCADE"),
        nullable=False,
        index=True,
    )
    created_at = Column(DateTime(timezone=True), server_default=func.now())

    state = relationship("State", back_populates="districts")
    centers = relationship(
        "Center",
        back_populates="district",
        cascade="all, delete-orphan",
    )
