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

from database import Base


class Center(Base):
    __tablename__ = "centers"
    __table_args__ = (
        UniqueConstraint("name", "district_id", name="uq_center_name_per_district"),
    )

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

    district = relationship("District", back_populates="centers")
    doctors = relationship(
        "Doctor",
        back_populates="center",
        cascade="all, delete-orphan",
    )
