prompts.py 2.57 KB
Newer Older
1
2
from fastapi import Depends, FastAPI, HTTPException, status
from datetime import datetime, timedelta
Michael Poluektov's avatar
Michael Poluektov committed
3
from typing import Union, Optional
4
5
6
7
8

from fastapi import APIRouter
from pydantic import BaseModel
import json

9
from apps.webui.models.prompts import Prompts, PromptForm, PromptModel
10

Timothy J. Baek's avatar
refac  
Timothy J. Baek committed
11
from utils.utils import get_verified_user, get_admin_user
12
13
14
15
16
17
18
19
20
from constants import ERROR_MESSAGES

router = APIRouter()

############################
# GetPrompts
############################


Michael Poluektov's avatar
Michael Poluektov committed
21
@router.get("/", response_model=list[PromptModel])
Timothy J. Baek's avatar
refac  
Timothy J. Baek committed
22
async def get_prompts(user=Depends(get_verified_user)):
23
    return Prompts.get_prompts()
24
25
26
27
28
29
30
31


############################
# CreateNewPrompt
############################


@router.post("/create", response_model=Optional[PromptModel])
32
async def create_new_prompt(form_data: PromptForm, user=Depends(get_admin_user)):
33
    prompt = Prompts.get_prompt_by_command(form_data.command)
34
    if prompt is None:
35
        prompt = Prompts.insert_new_prompt(user.id, form_data)
Timothy J. Baek's avatar
Timothy J. Baek committed
36
37
38

        if prompt:
            return prompt
39
        raise HTTPException(
Timothy J. Baek's avatar
Timothy J. Baek committed
40
            status_code=status.HTTP_400_BAD_REQUEST,
41
            detail=ERROR_MESSAGES.DEFAULT(),
42
        )
43
44
45
46
    raise HTTPException(
        status_code=status.HTTP_400_BAD_REQUEST,
        detail=ERROR_MESSAGES.COMMAND_TAKEN,
    )
47
48
49
50
51
52
53


############################
# GetPromptByCommand
############################


54
@router.get("/command/{command}", response_model=Optional[PromptModel])
Timothy J. Baek's avatar
refac  
Timothy J. Baek committed
55
async def get_prompt_by_command(command: str, user=Depends(get_verified_user)):
56
    prompt = Prompts.get_prompt_by_command(f"/{command}")
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

    if prompt:
        return prompt
    else:
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail=ERROR_MESSAGES.NOT_FOUND,
        )


############################
# UpdatePromptByCommand
############################


72
73
@router.post("/command/{command}/update", response_model=Optional[PromptModel])
async def update_prompt_by_command(
74
75
76
    command: str,
    form_data: PromptForm,
    user=Depends(get_admin_user),
77
):
78
    prompt = Prompts.update_prompt_by_command(f"/{command}", form_data)
79
80
81
82
83
84
85
86
87
88
89
90
91
92
    if prompt:
        return prompt
    else:
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
        )


############################
# DeletePromptByCommand
############################


93
@router.delete("/command/{command}/delete", response_model=bool)
94
async def delete_prompt_by_command(command: str, user=Depends(get_admin_user)):
95
    result = Prompts.delete_prompt_by_command(f"/{command}")
96
    return result