prompts.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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.webui.models.prompts import Prompts, PromptForm, PromptModel
  8. from utils.utils import get_current_user, get_admin_user
  9. from constants import ERROR_MESSAGES
  10. router = APIRouter()
  11. ############################
  12. # GetPrompts
  13. ############################
  14. @router.get("/", response_model=List[PromptModel])
  15. async def get_prompts(user=Depends(get_current_user)):
  16. return Prompts.get_prompts()
  17. ############################
  18. # CreateNewPrompt
  19. ############################
  20. @router.post("/create", response_model=Optional[PromptModel])
  21. async def create_new_prompt(
  22. form_data: PromptForm, user=Depends(get_admin_user)
  23. ):
  24. prompt = Prompts.get_prompt_by_command(form_data.command)
  25. if prompt == None:
  26. prompt = Prompts.insert_new_prompt(user.id, form_data)
  27. if prompt:
  28. return prompt
  29. raise HTTPException(
  30. status_code=status.HTTP_400_BAD_REQUEST,
  31. detail=ERROR_MESSAGES.DEFAULT(),
  32. )
  33. raise HTTPException(
  34. status_code=status.HTTP_400_BAD_REQUEST,
  35. detail=ERROR_MESSAGES.COMMAND_TAKEN,
  36. )
  37. ############################
  38. # GetPromptByCommand
  39. ############################
  40. @router.get("/command/{command}", response_model=Optional[PromptModel])
  41. async def get_prompt_by_command(
  42. command: str, user=Depends(get_current_user)
  43. ):
  44. prompt = Prompts.get_prompt_by_command(f"/{command}")
  45. if prompt:
  46. return prompt
  47. else:
  48. raise HTTPException(
  49. status_code=status.HTTP_401_UNAUTHORIZED,
  50. detail=ERROR_MESSAGES.NOT_FOUND,
  51. )
  52. ############################
  53. # UpdatePromptByCommand
  54. ############################
  55. @router.post("/command/{command}/update", response_model=Optional[PromptModel])
  56. async def update_prompt_by_command(
  57. command: str,
  58. form_data: PromptForm,
  59. user=Depends(get_admin_user),
  60. ):
  61. prompt = Prompts.update_prompt_by_command(f"/{command}", form_data)
  62. if prompt:
  63. return prompt
  64. else:
  65. raise HTTPException(
  66. status_code=status.HTTP_401_UNAUTHORIZED,
  67. detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
  68. )
  69. ############################
  70. # DeletePromptByCommand
  71. ############################
  72. @router.delete("/command/{command}/delete", response_model=bool)
  73. async def delete_prompt_by_command(
  74. command: str, user=Depends(get_admin_user)
  75. ):
  76. result = Prompts.delete_prompt_by_command(f"/{command}")
  77. return result