modelfiles.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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.modelfiles import (
  8. Modelfiles,
  9. ModelfileForm,
  10. ModelfileTagNameForm,
  11. ModelfileUpdateForm,
  12. ModelfileResponse,
  13. )
  14. from utils.utils import get_current_user, get_admin_user
  15. from constants import ERROR_MESSAGES
  16. router = APIRouter()
  17. ############################
  18. # GetModelfiles
  19. ############################
  20. @router.get("/", response_model=List[ModelfileResponse])
  21. async def get_modelfiles(skip: int = 0,
  22. limit: int = 50,
  23. user=Depends(get_current_user)):
  24. return Modelfiles.get_modelfiles(skip, limit)
  25. ############################
  26. # CreateNewModelfile
  27. ############################
  28. @router.post("/create", response_model=Optional[ModelfileResponse])
  29. async def create_new_modelfile(form_data: ModelfileForm,
  30. user=Depends(get_admin_user)):
  31. modelfile = Modelfiles.insert_new_modelfile(user.id, form_data)
  32. if modelfile:
  33. return ModelfileResponse(
  34. **{
  35. **modelfile.model_dump(),
  36. "modelfile":
  37. json.loads(modelfile.modelfile),
  38. })
  39. else:
  40. raise HTTPException(
  41. status_code=status.HTTP_401_UNAUTHORIZED,
  42. detail=ERROR_MESSAGES.DEFAULT(),
  43. )
  44. ############################
  45. # GetModelfileByTagName
  46. ############################
  47. @router.post("/", response_model=Optional[ModelfileResponse])
  48. async def get_modelfile_by_tag_name(form_data: ModelfileTagNameForm,
  49. user=Depends(get_current_user)):
  50. modelfile = Modelfiles.get_modelfile_by_tag_name(form_data.tag_name)
  51. if modelfile:
  52. return ModelfileResponse(
  53. **{
  54. **modelfile.model_dump(),
  55. "modelfile":
  56. json.loads(modelfile.modelfile),
  57. })
  58. else:
  59. raise HTTPException(
  60. status_code=status.HTTP_401_UNAUTHORIZED,
  61. detail=ERROR_MESSAGES.NOT_FOUND,
  62. )
  63. ############################
  64. # UpdateModelfileByTagName
  65. ############################
  66. @router.post("/update", response_model=Optional[ModelfileResponse])
  67. async def update_modelfile_by_tag_name(form_data: ModelfileUpdateForm,
  68. user=Depends(get_admin_user)):
  69. modelfile = Modelfiles.get_modelfile_by_tag_name(form_data.tag_name)
  70. if modelfile:
  71. updated_modelfile = {
  72. **json.loads(modelfile.modelfile),
  73. **form_data.modelfile,
  74. }
  75. modelfile = Modelfiles.update_modelfile_by_tag_name(
  76. form_data.tag_name, updated_modelfile)
  77. return ModelfileResponse(
  78. **{
  79. **modelfile.model_dump(),
  80. "modelfile":
  81. json.loads(modelfile.modelfile),
  82. })
  83. else:
  84. raise HTTPException(
  85. status_code=status.HTTP_401_UNAUTHORIZED,
  86. detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
  87. )
  88. ############################
  89. # DeleteModelfileByTagName
  90. ############################
  91. @router.delete("/delete", response_model=bool)
  92. async def delete_modelfile_by_tag_name(form_data: ModelfileTagNameForm,
  93. user=Depends(get_admin_user)):
  94. result = Modelfiles.delete_modelfile_by_tag_name(form_data.tag_name)
  95. return result