mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-05-13 21:30:21 +02:00
144 lines
5.7 KiB
Python
144 lines
5.7 KiB
Python
from fastapi import APIRouter
|
|
from fastapi import Depends
|
|
from fastapi import HTTPException
|
|
from sqlalchemy.orm import Session
|
|
|
|
from ee.onyx.db.standard_answer import fetch_standard_answer
|
|
from ee.onyx.db.standard_answer import fetch_standard_answer_categories
|
|
from ee.onyx.db.standard_answer import fetch_standard_answer_category
|
|
from ee.onyx.db.standard_answer import fetch_standard_answers
|
|
from ee.onyx.db.standard_answer import insert_standard_answer
|
|
from ee.onyx.db.standard_answer import insert_standard_answer_category
|
|
from ee.onyx.db.standard_answer import remove_standard_answer
|
|
from ee.onyx.db.standard_answer import update_standard_answer
|
|
from ee.onyx.db.standard_answer import update_standard_answer_category
|
|
from ee.onyx.server.manage.models import StandardAnswer
|
|
from ee.onyx.server.manage.models import StandardAnswerCategory
|
|
from ee.onyx.server.manage.models import StandardAnswerCategoryCreationRequest
|
|
from ee.onyx.server.manage.models import StandardAnswerCreationRequest
|
|
from onyx.auth.users import current_admin_user
|
|
from onyx.db.engine import get_session
|
|
from onyx.db.models import User
|
|
|
|
router = APIRouter(prefix="/manage")
|
|
|
|
|
|
@router.post("/admin/standard-answer")
|
|
def create_standard_answer(
|
|
standard_answer_creation_request: StandardAnswerCreationRequest,
|
|
db_session: Session = Depends(get_session),
|
|
_: User | None = Depends(current_admin_user),
|
|
) -> StandardAnswer:
|
|
standard_answer_model = insert_standard_answer(
|
|
keyword=standard_answer_creation_request.keyword,
|
|
answer=standard_answer_creation_request.answer,
|
|
category_ids=standard_answer_creation_request.categories,
|
|
match_regex=standard_answer_creation_request.match_regex,
|
|
match_any_keywords=standard_answer_creation_request.match_any_keywords,
|
|
db_session=db_session,
|
|
)
|
|
return StandardAnswer.from_model(standard_answer_model)
|
|
|
|
|
|
@router.get("/admin/standard-answer")
|
|
def list_standard_answers(
|
|
db_session: Session = Depends(get_session),
|
|
_: User | None = Depends(current_admin_user),
|
|
) -> list[StandardAnswer]:
|
|
standard_answer_models = fetch_standard_answers(db_session=db_session)
|
|
return [
|
|
StandardAnswer.from_model(standard_answer_model)
|
|
for standard_answer_model in standard_answer_models
|
|
]
|
|
|
|
|
|
@router.patch("/admin/standard-answer/{standard_answer_id}")
|
|
def patch_standard_answer(
|
|
standard_answer_id: int,
|
|
standard_answer_creation_request: StandardAnswerCreationRequest,
|
|
db_session: Session = Depends(get_session),
|
|
_: User | None = Depends(current_admin_user),
|
|
) -> StandardAnswer:
|
|
existing_standard_answer = fetch_standard_answer(
|
|
standard_answer_id=standard_answer_id,
|
|
db_session=db_session,
|
|
)
|
|
|
|
if existing_standard_answer is None:
|
|
raise HTTPException(status_code=404, detail="Standard answer not found")
|
|
|
|
standard_answer_model = update_standard_answer(
|
|
standard_answer_id=standard_answer_id,
|
|
keyword=standard_answer_creation_request.keyword,
|
|
answer=standard_answer_creation_request.answer,
|
|
category_ids=standard_answer_creation_request.categories,
|
|
match_regex=standard_answer_creation_request.match_regex,
|
|
match_any_keywords=standard_answer_creation_request.match_any_keywords,
|
|
db_session=db_session,
|
|
)
|
|
return StandardAnswer.from_model(standard_answer_model)
|
|
|
|
|
|
@router.delete("/admin/standard-answer/{standard_answer_id}")
|
|
def delete_standard_answer(
|
|
standard_answer_id: int,
|
|
db_session: Session = Depends(get_session),
|
|
_: User | None = Depends(current_admin_user),
|
|
) -> None:
|
|
return remove_standard_answer(
|
|
standard_answer_id=standard_answer_id,
|
|
db_session=db_session,
|
|
)
|
|
|
|
|
|
@router.post("/admin/standard-answer/category")
|
|
def create_standard_answer_category(
|
|
standard_answer_category_creation_request: StandardAnswerCategoryCreationRequest,
|
|
db_session: Session = Depends(get_session),
|
|
_: User | None = Depends(current_admin_user),
|
|
) -> StandardAnswerCategory:
|
|
standard_answer_category_model = insert_standard_answer_category(
|
|
category_name=standard_answer_category_creation_request.name,
|
|
db_session=db_session,
|
|
)
|
|
return StandardAnswerCategory.from_model(standard_answer_category_model)
|
|
|
|
|
|
@router.get("/admin/standard-answer/category")
|
|
def list_standard_answer_categories(
|
|
db_session: Session = Depends(get_session),
|
|
_: User | None = Depends(current_admin_user),
|
|
) -> list[StandardAnswerCategory]:
|
|
standard_answer_category_models = fetch_standard_answer_categories(
|
|
db_session=db_session
|
|
)
|
|
return [
|
|
StandardAnswerCategory.from_model(standard_answer_category_model)
|
|
for standard_answer_category_model in standard_answer_category_models
|
|
]
|
|
|
|
|
|
@router.patch("/admin/standard-answer/category/{standard_answer_category_id}")
|
|
def patch_standard_answer_category(
|
|
standard_answer_category_id: int,
|
|
standard_answer_category_creation_request: StandardAnswerCategoryCreationRequest,
|
|
db_session: Session = Depends(get_session),
|
|
_: User | None = Depends(current_admin_user),
|
|
) -> StandardAnswerCategory:
|
|
existing_standard_answer_category = fetch_standard_answer_category(
|
|
standard_answer_category_id=standard_answer_category_id,
|
|
db_session=db_session,
|
|
)
|
|
|
|
if existing_standard_answer_category is None:
|
|
raise HTTPException(
|
|
status_code=404, detail="Standard answer category not found"
|
|
)
|
|
|
|
standard_answer_category_model = update_standard_answer_category(
|
|
standard_answer_category_id=standard_answer_category_id,
|
|
category_name=standard_answer_category_creation_request.name,
|
|
db_session=db_session,
|
|
)
|
|
return StandardAnswerCategory.from_model(standard_answer_category_model)
|