Spaces:
Runtime error
Runtime error
File size: 2,321 Bytes
b6f0f70 d3cdb3c b6f0f70 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
import uuid
from fastapi import APIRouter, HTTPException
from api.schemas import CreateDoctorSchema, UpdateDoctorSchema, DoctorResponse
from api.models import Doctor
from api.database import SessionLocal
router = APIRouter()
@router.get("/")
async def get_doctors():
db = SessionLocal()
try:
doctors = db.query(Doctor).all()
return [{"id": Doctor.id, "name": Doctor.name, "role_detail": Doctor.role_detail, "rating": Doctor.rating , "price": Doctor.price, "university": Doctor.university, "yearofexperience": Doctor.yearofexperience} for Doctor in doctors]
except Exception as e:
db.rollback()
raise HTTPException(status_code=400, detail=str(e))
finally:
db.close()
@router.get("/{doctor_id}")
async def get_doctor(doctor_id: uuid.UUID):
db = SessionLocal()
try:
doctor = db.query(Doctor).filter(Doctor.id == doctor_id).first()
if not doctor:
raise HTTPException(status_code=404, detail="Doctor not found")
return doctor
except Exception as e:
db.rollback()
raise HTTPException(status_code=400, detail=str(e))
finally:
db.close()
@router.post("/")
async def create_doctor(doctor: CreateDoctorSchema):
db = SessionLocal()
try:
new_doctor = Doctor(**doctor.dict())
db.add(new_doctor)
db.commit()
db.refresh(new_doctor)
return {"message": "Doctor created successfully", "doctor": new_doctor.__dict__}
except Exception as e:
db.rollback()
raise HTTPException(status_code=400, detail=str(e))
finally:
db.close()
@router.put("/{doctor_id}")
async def update_doctor(doctor_id: uuid.UUID, doctor: UpdateDoctorSchema):
db = SessionLocal()
try:
existing_doctor = db.query(Doctor).filter(Doctor.id == doctor_id).first()
if not existing_doctor:
raise HTTPException(status_code=404, detail="Doctor not found")
for attr, value in doctor.dict().items():
setattr(existing_doctor, attr, value)
db.commit()
return {"message": "Doctor updated successfully", "doctor": existing_doctor.__dict__}
except Exception as e:
db.rollback()
raise HTTPException(status_code=400, detail=str(e))
finally:
db.close()
|