models.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. from fastapi import Depends, FastAPI, HTTPException, status
  2. from datetime import datetime, timedelta
  3. from typing import List, Union, Optional
  4. from fastapi import APIRouter
  5. from pydantic import BaseModel
  6. import json
  7. from apps.web.models.models import Models, ModelModel, ModelForm, ModelResponse
  8. from utils.utils import get_verified_user, get_admin_user
  9. from constants import ERROR_MESSAGES
  10. router = APIRouter()
  11. ###########################
  12. # getAllModels
  13. ###########################
  14. @router.get("/", response_model=List[ModelResponse])
  15. async def get_models(user=Depends(get_verified_user)):
  16. return Models.get_all_models()
  17. ############################
  18. # AddNewModel
  19. ############################
  20. @router.post("/add", response_model=Optional[ModelModel])
  21. async def add_new_model(form_data: ModelForm, user=Depends(get_admin_user)):
  22. model = Models.insert_new_model(form_data, user.id)
  23. if model:
  24. return model
  25. else:
  26. raise HTTPException(
  27. status_code=status.HTTP_401_UNAUTHORIZED,
  28. detail=ERROR_MESSAGES.DEFAULT(),
  29. )
  30. ############################
  31. # GetModelById
  32. ############################
  33. @router.get("/{id}", response_model=Optional[ModelModel])
  34. async def get_model_by_id(id: str, user=Depends(get_verified_user)):
  35. model = Models.get_model_by_id(id)
  36. if model:
  37. return model
  38. else:
  39. raise HTTPException(
  40. status_code=status.HTTP_401_UNAUTHORIZED,
  41. detail=ERROR_MESSAGES.NOT_FOUND,
  42. )
  43. ############################
  44. # UpdateModelById
  45. ############################
  46. @router.post("/{id}/update", response_model=Optional[ModelModel])
  47. async def update_model_by_id(
  48. id: str, form_data: ModelForm, user=Depends(get_admin_user)
  49. ):
  50. model = Models.get_model_by_id(id)
  51. if model:
  52. model = Models.update_model_by_id(id, form_data)
  53. return model
  54. else:
  55. raise HTTPException(
  56. status_code=status.HTTP_401_UNAUTHORIZED,
  57. detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
  58. )
  59. ############################
  60. # DeleteModelById
  61. ############################
  62. @router.delete("/{id}/delete", response_model=bool)
  63. async def delete_model_by_id(id: str, user=Depends(get_admin_user)):
  64. result = Models.delete_model_by_id(id)
  65. return result