Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, status, Depends | |
| from fastapi.responses import JSONResponse | |
| from typing import Annotated | |
| from src.apis.models.user_models import User | |
| from src.apis.controllers.auth_controller import ( | |
| login_control, | |
| ) | |
| from src.apis.middlewares.auth_middleware import get_current_user | |
| from pydantic import BaseModel, Field | |
| from src.utils.logger import logger | |
| from src.config.mongo import PromptCRUD | |
| from bson import ObjectId | |
| router = APIRouter(prefix="/prompt", tags=["Prompt Editor"]) | |
| user_dependency = Annotated[User, Depends(get_current_user)] | |
| async def list_prompt(user: user_dependency): | |
| try: | |
| logger.info(f"User {user['username']} is listing prompts.") | |
| prompts = await PromptCRUD.read({}) | |
| for prompt in prompts: | |
| prompt.pop("created_at") | |
| prompt.pop("updated_at") | |
| prompt.pop("expire_at") | |
| return JSONResponse(content=prompts, status_code=status.HTTP_200_OK) | |
| except Exception as e: | |
| return JSONResponse(content={"message": str(e)}, status_code=500) | |
| class UpdatePromptRequest(BaseModel): | |
| id: str = Field(..., description="Prompt's id") | |
| script_writer_prompt: str = Field(None, description="Script Writer Prompt") | |
| script_re_outline_prompt: str = Field(None, description="Script Re-Outline Prompt") | |
| scientific_fact_finder_prompt: str = Field(None, description="Scientific Fact Finder Prompt") | |
| comment_insight_extractor_prompt: str = Field(None, description="Comment Insight Extractor Prompt") | |
| script_structure_analyzer_prompt: str = Field(None, description="Script Structure Analyzer Prompt") | |
| async def update_prompt(user: user_dependency, body: UpdatePromptRequest): | |
| try: | |
| logger.info(f"User {user['username']} is updating prompt {body.id}.") | |
| await PromptCRUD.update( | |
| {"_id": ObjectId(body.id)}, | |
| {"$set": body.model_dump(exclude_none=True)}, | |
| ) | |
| return JSONResponse( | |
| content={"message": "Prompt updated successfully"}, | |
| status_code=status.HTTP_200_OK, | |
| ) | |
| except Exception as e: | |
| return JSONResponse(content={"message": str(e)}, status_code=500) | |