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

from database import Base


class Doctor(Base):
    __tablename__ = "doctors"

    id = Column(Integer, primary_key=True, index=True, autoincrement=True)

    # ----- personal details -----
    full_name = Column(String(100), nullable=False)
    email = Column(String(100), nullable=False, unique=True, index=True)
    mobile_number = Column(String(15), nullable=False, unique=True, index=True)
    gender = Column(String(20), nullable=True)
    age = Column(Integer, nullable=True)
    specialization = Column(String(100), nullable=True)
    address = Column(String(255), nullable=True)

    # ----- login credentials (created by the admin) -----
    username = Column(String(50), nullable=False, unique=True, index=True)
    password = Column(String(200), nullable=False)  # bcrypt hash

    center_id = Column(
        Integer,
        ForeignKey("centers.id", ondelete="CASCADE"),
        nullable=False,
        index=True,
    )
    is_active = Column(Boolean, default=True)
    created_at = Column(DateTime(timezone=True), server_default=func.now())

    center = relationship("Center", back_populates="doctors")
