fix
This commit is contained in:
@@ -292,6 +292,78 @@ async def stats(
|
||||
}
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Name bank — get/update character name banks per language
|
||||
# --------------------------------------------------------------------------- #
|
||||
@router.get("/names/{language}")
|
||||
async def get_name_bank(
|
||||
language: str,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
_user: User = Depends(require_admin),
|
||||
) -> dict:
|
||||
"""Get the character name bank for a language."""
|
||||
names = await get_setting(db, f"character_names.{language}")
|
||||
if not isinstance(names, list):
|
||||
names = []
|
||||
return {"language": language, "names": names, "count": len(names)}
|
||||
|
||||
|
||||
@router.put("/names/{language}")
|
||||
async def update_name_bank(
|
||||
language: str,
|
||||
body: dict,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
_user: User = Depends(require_admin),
|
||||
) -> dict:
|
||||
"""Update the character name bank for a language.
|
||||
|
||||
Body: {names: ["name1", "name2", ...]}
|
||||
"""
|
||||
names = body.get("names", [])
|
||||
if not isinstance(names, list):
|
||||
raise HTTPException(400, "names must be an array")
|
||||
# Validate all entries are strings
|
||||
cleaned = [str(n).strip() for n in names if str(n).strip()]
|
||||
await set_setting(db, f"character_names.{language}", cleaned)
|
||||
return {"language": language, "names": cleaned, "count": len(cleaned)}
|
||||
|
||||
|
||||
@router.post("/names/{language}/add")
|
||||
async def add_name_to_bank(
|
||||
language: str,
|
||||
body: dict,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
_user: User = Depends(require_admin),
|
||||
) -> dict:
|
||||
"""Add a single name to the bank. Body: {name: "..."}"""
|
||||
name = body.get("name", "").strip()
|
||||
if not name:
|
||||
raise HTTPException(400, "name is required")
|
||||
names = await get_setting(db, f"character_names.{language}")
|
||||
if not isinstance(names, list):
|
||||
names = []
|
||||
if name not in names:
|
||||
names.append(name)
|
||||
await set_setting(db, f"character_names.{language}", names)
|
||||
return {"language": language, "names": names, "count": len(names)}
|
||||
|
||||
|
||||
@router.delete("/names/{language}/{name}")
|
||||
async def remove_name_from_bank(
|
||||
language: str,
|
||||
name: str,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
_user: User = Depends(require_admin),
|
||||
) -> dict:
|
||||
"""Remove a name from the bank."""
|
||||
names = await get_setting(db, f"character_names.{language}")
|
||||
if not isinstance(names, list):
|
||||
names = []
|
||||
names = [n for n in names if n != name]
|
||||
await set_setting(db, f"character_names.{language}", names)
|
||||
return {"language": language, "names": names, "count": len(names)}
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# LLM model list — fetch available models from the LLM provider
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
Reference in New Issue
Block a user