99 lines
3.2 KiB
Python
99 lines
3.2 KiB
Python
from fastapi import status
|
|
from fastapi.routing import APIRouter
|
|
from fastapi.exceptions import HTTPException
|
|
from fastapi.responses import JSONResponse
|
|
|
|
from databases import ApiEnumDropdown
|
|
from api_validations.validations_request import (
|
|
SingleEnumClassKey,
|
|
SingleEnumUUID,
|
|
SingleEnumOnlyClass,
|
|
)
|
|
|
|
|
|
enums_route = APIRouter(prefix="/enums", tags=["Enums and Dropdowns of API"])
|
|
enums_route.include_router(enums_route, include_in_schema=False)
|
|
|
|
|
|
@enums_route.post(path="/get/key", summary="Get single enum via key")
|
|
def get_single_enum_via_key_and_class(data: SingleEnumClassKey):
|
|
enum = ApiEnumDropdown.query.filter(
|
|
ApiEnumDropdown.enum_class.ilike(data.class_name),
|
|
ApiEnumDropdown.key.ilike(data.key_name),
|
|
).populate_existing()
|
|
if record := enum.first():
|
|
return JSONResponse(
|
|
content={
|
|
"completed": True,
|
|
"message": "Get single enum via key",
|
|
"data": record.get_enum_dict() if enum else None,
|
|
},
|
|
status_code=status.HTTP_200_OK,
|
|
)
|
|
raise HTTPException(
|
|
status_code=status.HTTP_404_NOT_FOUND,
|
|
detail="Enum not found",
|
|
)
|
|
|
|
|
|
@enums_route.post(path="/get/uu_id", summary="Get single enum via uu_id")
|
|
def get_single_enum_via_uuid(data: SingleEnumUUID):
|
|
enum = ApiEnumDropdown.query.filter(
|
|
ApiEnumDropdown.uu_id == data.uu_id
|
|
).populate_existing()
|
|
if records := enum.first():
|
|
return JSONResponse(
|
|
content={
|
|
"completed": True,
|
|
"message": "Get single enum via uu_id",
|
|
"data": records.get_enum_dict(),
|
|
},
|
|
status_code=status.HTTP_200_OK,
|
|
)
|
|
raise HTTPException(
|
|
status_code=status.HTTP_404_NOT_FOUND,
|
|
detail="Enum not found",
|
|
)
|
|
|
|
|
|
@enums_route.post(path="/list/class", summary="Get all enums via class")
|
|
def list_all_enums_with_class(data: SingleEnumOnlyClass):
|
|
enums = ApiEnumDropdown.query.filter(
|
|
ApiEnumDropdown.enum_class.ilike(data.class_name or "")
|
|
).populate_existing()
|
|
if records := enums.all():
|
|
records_list = [record.get_enum_dict() for record in records]
|
|
return JSONResponse(
|
|
content={
|
|
"completed": True,
|
|
"message": "Get all enums via class",
|
|
"count": len(records_list),
|
|
"data": records_list,
|
|
},
|
|
status_code=status.HTTP_200_OK,
|
|
)
|
|
raise HTTPException(
|
|
status_code=status.HTTP_404_NOT_FOUND,
|
|
detail="Enums not found",
|
|
)
|
|
|
|
|
|
@enums_route.post(path="/list/all", summary="Get all enums")
|
|
def list_all_enums():
|
|
enums = ApiEnumDropdown.query.filter().populate_existing()
|
|
if records := enums.all():
|
|
records_list = [record.get_enum_dict() for record in records]
|
|
return JSONResponse(
|
|
content={
|
|
"completed": True,
|
|
"count": len(records_list),
|
|
"message": "Get all enums",
|
|
"data": records_list,
|
|
},
|
|
status_code=status.HTTP_200_OK,
|
|
)
|
|
raise HTTPException(
|
|
status_code=status.HTTP_404_NOT_FOUND,
|
|
detail="Enums can not be listed",
|
|
)
|