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()