49 lines
2.1 KiB
Python
49 lines
2.1 KiB
Python
from schemas.CreateSchemas import ClinicDoctorCreate
|
|
from schemas.UpdateSchemas import ClinicDoctorUpdate
|
|
from schemas.ResponseSchemas import ClinicDoctorResponse
|
|
from database import get_db
|
|
from models import ClinicDoctors
|
|
from sqlalchemy.orm import Session
|
|
from services.clinicServices import ClinicServices
|
|
from exceptions import ResourceNotFoundException
|
|
|
|
class ClinicDoctorsServices:
|
|
def __init__(self):
|
|
self.db: Session = next(get_db())
|
|
self.clinic_services = ClinicServices()
|
|
|
|
def create_clinic_doctor(self, clinic_doctor: ClinicDoctorCreate) -> ClinicDoctorResponse:
|
|
|
|
# check if clinic exists
|
|
self.clinic_services.get_clinic_by_id(clinic_doctor.clinic_id)
|
|
|
|
clinic_doctor = ClinicDoctors(**clinic_doctor.model_dump())
|
|
self.db.add(clinic_doctor)
|
|
self.db.commit()
|
|
self.db.refresh(clinic_doctor)
|
|
return ClinicDoctorResponse(**clinic_doctor.__dict__.copy())
|
|
|
|
def update_clinic_doctor(self, clinic_doctor_id: int, clinic_doctor_data: ClinicDoctorUpdate) -> ClinicDoctorResponse:
|
|
# check if clinic doctor exists
|
|
clinic_doctor = self.db.query(ClinicDoctors).filter(ClinicDoctors.id == clinic_doctor_id).first()
|
|
if clinic_doctor is None:
|
|
raise ResourceNotFoundException("Clinic doctor not found")
|
|
|
|
if clinic_doctor_data.clinic_id != clinic_doctor.clinic_id:
|
|
# check if clinic exists
|
|
self.clinic_services.get_clinic_by_id(clinic_doctor_data.clinic_id)
|
|
|
|
# Update the existing object with new values
|
|
update_data = clinic_doctor_data.model_dump(exclude_unset=True)
|
|
for key, value in update_data.items():
|
|
setattr(clinic_doctor, key, value)
|
|
|
|
self.db.add(clinic_doctor)
|
|
self.db.commit()
|
|
self.db.refresh(clinic_doctor)
|
|
return ClinicDoctorResponse(**clinic_doctor.__dict__.copy())
|
|
|
|
def delete_clinic_doctor(self, clinic_doctor_id: int):
|
|
clinic_doctor = self.db.query(ClinicDoctors).filter(ClinicDoctors.id == clinic_doctor_id).first()
|
|
self.db.delete(clinic_doctor)
|
|
self.db.commit() |