from typing import List from fastapi import APIRouter, HTTPException, status # database from database import get_db # schemas from schemas.ResponseSchemas import Clinic from schemas.UpdateSchemas import ClinicUpdate from models.Clinics import Clinics # services from services.clinicServices import ClinicServices # Constants from schemas.ApiResponse import ApiResponse from utils.constants import DEFAULT_SKIP, DEFAULT_LIMIT router = APIRouter() @router.get("/", response_model=List[Clinic]) async def get_clinics( skip: int = DEFAULT_SKIP, limit: int = DEFAULT_LIMIT ): clinics = ClinicServices().get_clinics(skip, limit) return ApiResponse(data=clinics, message="Clinics retrieved successfully", status_code=status.HTTP_200_OK) @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", status_code=status.HTTP_200_OK) @router.put("/{clinic_id}", response_model=Clinic) async def update_clinic( clinic_id: int, clinic: ClinicUpdate ): clinic = ClinicServices().update_clinic(clinic_id, clinic) return ApiResponse(data=clinic, message="Clinic updated successfully", status_code=status.HTTP_200_OK) @router.delete("/{clinic_id}", status_code=status.HTTP_204_NO_CONTENT) async def delete_clinic(clinic_id: int): db_clinic = db.query(Clinics).where(Clinics.id == clinic_id).first() if db_clinic is None: raise HTTPException(status_code=404, detail="Clinic not found") db.delete(db_clinic) db.commit() return None