diff --git a/apis/endpoints/clinicDoctor.py b/apis/endpoints/clinicDoctor.py index 132ca41..74e038a 100644 --- a/apis/endpoints/clinicDoctor.py +++ b/apis/endpoints/clinicDoctor.py @@ -6,6 +6,10 @@ from services.clinicDoctorsServices import ClinicDoctorsServices router = APIRouter() +@router.get("/") +def get_clinic_doctors(): + clinic_doctors = ClinicDoctorsServices().get_clinic_doctors() + return ApiResponse(data=clinic_doctors, message="Clinic doctors retrieved successfully") @router.post("/") def create_clinic_doctor(clinic_doctor: ClinicDoctorCreate): @@ -20,4 +24,4 @@ def update_clinic_doctor(clinic_doctor_id: int, clinic_doctor: ClinicDoctorUpdat @router.delete("/{clinic_doctor_id}") def delete_clinic_doctor(clinic_doctor_id: int): ClinicDoctorsServices().delete_clinic_doctor(clinic_doctor_id) - return ApiResponse(data="OK", message="Clinic doctor deleted successfully") + return ApiResponse(data="OK", message="Clinic doctor deleted successfully") \ No newline at end of file diff --git a/apis/endpoints/users.py b/apis/endpoints/users.py index 4fa2848..3079a45 100644 --- a/apis/endpoints/users.py +++ b/apis/endpoints/users.py @@ -4,12 +4,18 @@ from middleware.auth_dependency import auth_required from services.userServices import UserServices from schemas.ApiResponse import ApiResponse from schemas.UpdateSchemas import UserUpdate +from utils.constants import DEFAULT_LIMIT, DEFAULT_PAGE router = APIRouter() @router.get("/") -async def get_users(): - user = await UserServices().get_users() +async def get_users(limit:int = DEFAULT_LIMIT, page:int = DEFAULT_PAGE, search:str = ""): + if page == 0: + page = 1 + offset = (page - 1) * limit + + user = await UserServices().get_users(limit, offset, search) + return ApiResponse( data=user, message="User fetched successfully" diff --git a/services/clinicDoctorsServices.py b/services/clinicDoctorsServices.py index 6a0479c..0c5a5cf 100644 --- a/services/clinicDoctorsServices.py +++ b/services/clinicDoctorsServices.py @@ -6,6 +6,7 @@ from models import ClinicDoctors from sqlalchemy.orm import Session from services.clinicServices import ClinicServices from exceptions import ResourceNotFoundException +from interface.common_response import CommonResponse class ClinicDoctorsServices: def __init__(self): @@ -67,4 +68,13 @@ class ClinicDoctorsServices: result[status.value] = count return result + + def get_clinic_doctors(self): + clinic_doctors = self.db.query(ClinicDoctors).all() + + total = self.db.query(ClinicDoctors).count() + + response = CommonResponse(data=[ClinicDoctorResponse(**clinic_doctor.__dict__.copy()) for clinic_doctor in clinic_doctors], total=total) + + return response \ No newline at end of file diff --git a/services/userServices.py b/services/userServices.py index 5bc0890..1020d1a 100644 --- a/services/userServices.py +++ b/services/userServices.py @@ -9,6 +9,7 @@ from models import Clinics from enums.enums import ClinicStatus, UserType from schemas.UpdateSchemas import UserUpdate from exceptions.unauthorized_exception import UnauthorizedException +from interface.common_response import CommonResponse from utils.password_utils import hash_password from schemas.CreateSchemas import UserCreate from exceptions.resource_not_found_exception import ResourceNotFoundException @@ -131,11 +132,14 @@ class UserServices: Users.userType.contains(search) ) ) - users = query.limit(limit).offset(offset).all() - - user_response = [UserResponse(**user.__dict__.copy()) for user in users] - return user_response + users = query.limit(limit).offset(offset).all() + + total = self.db.query(Users).count() + + response = CommonResponse(data=[UserResponse(**user.__dict__.copy()) for user in users], total=total) + + return response async def get_user_by_email(self, email: str) -> UserResponse: user = self.db.query(Users).filter(Users.email == email.lower()).first()