from sqlalchemy import Column, Integer, String, ForeignKey, DateTime from sqlalchemy.orm import relationship from sqlalchemy.sql import func from app.domain.models.base import BaseModel from app.settings import settings class Appointment(BaseModel): __tablename__ = 'appointments' __table_args__ = {"schema": settings.SCHEMA} results = Column(String) days_until_the_next_appointment = Column(Integer) appointment_datetime = Column(DateTime, nullable=False, server_default=func.now()) patient_id = Column(Integer, ForeignKey(f'{settings.SCHEMA}.patients.id', ondelete='CASCADE'), nullable=False) doctor_id = Column(Integer, ForeignKey(f'{settings.SCHEMA}.users.id', ondelete='SET NULL'), nullable=True) type_id = Column(Integer, ForeignKey(f'{settings.SCHEMA}.appointment_types.id', ondelete='CASCADE'), nullable=False) patient = relationship('Patient', back_populates='appointments') doctor = relationship('User', back_populates='appointments') type = relationship('AppointmentType', back_populates='appointments') files = relationship('AppointmentFile', back_populates='appointment', cascade="all, delete")