from config import BannerModel from fastapi import APIRouter, Depends, Request from pydantic import BaseModel from utils.utils import get_admin_user, get_verified_user router = APIRouter() class SetDefaultModelsForm(BaseModel): models: str class PromptSuggestion(BaseModel): title: list[str] content: str class SetDefaultSuggestionsForm(BaseModel): suggestions: list[PromptSuggestion] ############################ # SetDefaultModels ############################ @router.post("/default/models", response_model=str) async def set_global_default_models( request: Request, form_data: SetDefaultModelsForm, user=Depends(get_admin_user) ): request.app.state.config.DEFAULT_MODELS = form_data.models return request.app.state.config.DEFAULT_MODELS @router.post("/default/suggestions", response_model=list[PromptSuggestion]) async def set_global_default_suggestions( request: Request, form_data: SetDefaultSuggestionsForm, user=Depends(get_admin_user), ): data = form_data.model_dump() request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS = data["suggestions"] return request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS ############################ # SetBanners ############################ class SetBannersForm(BaseModel): banners: list[BannerModel] @router.post("/banners", response_model=list[BannerModel]) async def set_banners( request: Request, form_data: SetBannersForm, user=Depends(get_admin_user), ): data = form_data.model_dump() request.app.state.config.BANNERS = data["banners"] return request.app.state.config.BANNERS @router.get("/banners", response_model=list[BannerModel]) async def get_banners( request: Request, user=Depends(get_verified_user), ): return request.app.state.config.BANNERS