feat: clinic and user table change

feat: centralized db error handler
fix: api responses
This commit is contained in:
2025-05-16 13:24:26 +05:30
parent 2efc09cf20
commit 30f51618fe
18 changed files with 338 additions and 80 deletions
+6 -5
View File
@@ -2,12 +2,13 @@ from fastapi import APIRouter
from services.authService import AuthService
from schemas.CreateSchemas import UserCreate
from schemas.ApiResponse import ApiResponse
from schemas.BaseSchemas import AuthBase
router = APIRouter()
@router.post("/login")
async def login(email: str, password: str):
token = await AuthService().login(email, password)
def login(data: AuthBase):
token = AuthService().login(data)
return ApiResponse(
data=token,
message="Login successful"
@@ -15,9 +16,9 @@ async def login(email: str, password: str):
@router.post("/register")
async def register(user_data: UserCreate):
await AuthService().register(user_data)
def register(user_data: UserCreate):
token = AuthService().register(user_data)
return ApiResponse(
data="OK",
data=token,
message="User registered successfully"
)
+7 -3
View File
@@ -24,13 +24,17 @@ 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)
return ApiResponse(data=clinics, message="Clinics retrieved successfully" )
@router.get("/latest-id")
async def get_latest_clinic_id():
clinic_id = ClinicServices().get_latest_clinic_id()
return ApiResponse(data=clinic_id, message="Latest clinic ID 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", status_code=status.HTTP_200_OK)
return ApiResponse(data=clinic, message="Clinic retrieved successfully")
@router.put("/{clinic_id}", response_model=Clinic)
@@ -38,7 +42,7 @@ 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)
return ApiResponse(data=clinic, message="Clinic updated successfully")
@router.delete("/{clinic_id}", status_code=status.HTTP_204_NO_CONTENT)
+9 -7
View File
@@ -1,15 +1,17 @@
from fastapi import APIRouter, status
from fastapi import Request
from services.s3Service import upload_file as upload_file_service
from enums.enums import S3FolderNameEnum
from typing import Optional
from schemas.ApiResponse import ApiResponse
from schemas.CreateSchemas import S3Create
router = APIRouter()
@router.post("/", status_code=status.HTTP_200_OK)
async def upload_file(request: Request, folder: S3FolderNameEnum, file_name: str, clinic_id: Optional[str] = None):
userId = request.state.user["id"]
resp = await upload_file_service(userId, folder, file_name, clinic_id)
return ApiResponse(data=resp, message="File uploaded successfully")
@router.post("/")
def upload_file(data:S3Create):
try:
resp = upload_file_service(data.folder, data.file_name)
return ApiResponse(data=resp, message="File uploaded successfully")
except Exception as e:
logger.error(f"Error uploading file: {str(e)}")
raise e
+21 -17
View File
@@ -9,12 +9,12 @@ from utils.constants import DEFAULT_LIMIT, DEFAULT_PAGE
router = APIRouter()
@router.get("/")
async def get_users(limit:int = DEFAULT_LIMIT, page:int = DEFAULT_PAGE, search:str = ""):
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)
user = UserServices().get_users(limit, offset, search)
return ApiResponse(
data=user,
@@ -22,43 +22,47 @@ async def get_users(limit:int = DEFAULT_LIMIT, page:int = DEFAULT_PAGE, search:s
)
@router.get("/me")
async def get_user(request: Request):
user_id = request.state.user["id"]
user = await UserServices().get_user(user_id)
return ApiResponse(
data=user,
message="User fetched successfully"
)
def get_user(request: Request):
try:
user_id = request.state.user["id"]
user = UserServices().get_user(user_id)
return ApiResponse(
data=user,
message="User fetched successfully"
)
except Exception as e:
logger.error(f"Error getting user: {str(e)}")
raise e
@router.get("/{user_id}")
async def get_user(request: Request, user_id: int):
user = await UserServices().get_user(user_id)
def get_user(request: Request, user_id: int):
user = UserServices().get_user(user_id)
return ApiResponse(
data=user,
message="User fetched successfully"
)
@router.delete("/")
async def delete_user(request: Request):
def delete_user(request: Request):
user_id = request.state.user["id"]
await UserServices().delete_user(user_id)
UserServices().delete_user(user_id)
return ApiResponse(
data="OK",
message="User deleted successfully"
)
@router.put("/")
async def update_user(request: Request, user_data: UserUpdate):
def update_user(request: Request, user_data: UserUpdate):
user_id = request.state.user["id"]
user = await UserServices().update_user(user_id, user_data)
user = UserServices().update_user(user_id, user_data)
return ApiResponse(
data=user,
message="User updated successfully"
)
@router.put("/{user_id}")
async def update_user(request: Request, user_id: int, user_data: UserUpdate):
user = await UserServices().update_user(user_id, user_data)
def update_user(request: Request, user_id: int, user_data: UserUpdate):
user = UserServices().update_user(user_id, user_data)
return ApiResponse(
data=user,
message="User updated successfully"