from typing import List, Literal, Union from fastapi import APIRouter, status, Request # schemas from schemas.ResponseSchemas import Clinic from schemas.UpdateSchemas import ClinicUpdate # services from services.clinicServices import ClinicServices # Constants from schemas.ApiResponse import ApiResponse from interface.common_response import CommonResponse from utils.constants import DEFAULT_PAGE, DEFAULT_SKIP, DEFAULT_LIMIT router = APIRouter() @router.get("/") async def get_clinics( req:Request, page: int = DEFAULT_PAGE, limit: int = DEFAULT_LIMIT, filter_type: Union[Literal["UNREGISTERED"], Literal["REGISTERED"]] = "UNREGISTERED", search:str = "" ): if page < 1: page = 1 offset = (page - 1) * limit clinics = ClinicServices().get_clinics(req.state.user, limit, offset, filter_type, search) return ApiResponse(data=clinics, message="Clinics retrieved successfully" ) @router.get("/verified-files/{clinic_id}") async def get_verified_files(clinic_id: int): clinic = ClinicServices().get_clinic_by_id(clinic_id) return ApiResponse(data=clinic, message="Clinic retrieved successfully") @router.get("/{clinic_id}") async def get_clinic(clinic_id: int): clinic = ClinicServices().get_clinic_by_id(clinic_id) return ApiResponse(data=clinic, message="Clinic retrieved successfully") @router.put("/{clinic_id}") async def update_clinic( req:Request, clinic_id: int, clinic: ClinicUpdate ): clinic = ClinicServices().update_clinic(req.state.user, clinic_id, clinic) return ApiResponse(data=clinic, message="Clinic updated successfully") @router.delete("/{clinic_id}", status_code=status.HTTP_204_NO_CONTENT) async def delete_clinic(clinic_id: int): ClinicServices().delete_clinic(clinic_id) return ApiResponse(message="Clinic deleted successfully")