Files
Nat20-Notes/backend/app/routers/campaigns.py
KansaiGaijin 9e70b78d7c
Some checks failed
Build and Push / build (push) Has been cancelled
fix: env var overrides for campaign settings (hf_token, ollama_host etc)
2026-07-21 18:30:08 +12:00

67 lines
2.0 KiB
Python

from fastapi import APIRouter, HTTPException
from .. import database as db
from ..config import CAMPAIGN_SETTINGS, merge_campaign_settings_with_env
router = APIRouter(prefix="/api/campaigns", tags=["campaigns"])
@router.get("")
def list_campaigns():
return db.list_campaigns()
@router.post("")
def create_campaign(body: dict):
name = body.get("name", "").strip()
if not name:
raise HTTPException(400, "Name is required")
desc = body.get("description", "").strip()
return db.create_campaign(name, desc)
@router.get("/{campaign_id}")
def get_campaign(campaign_id: str):
campaign = db.get_campaign(campaign_id)
if not campaign:
raise HTTPException(404, "Campaign not found")
return campaign
@router.put("/{campaign_id}")
def update_campaign(campaign_id: str, body: dict):
if not db.get_campaign(campaign_id):
raise HTTPException(404, "Campaign not found")
updated = db.update_campaign(
campaign_id,
name=body.get("name"),
description=body.get("description"),
)
return updated
@router.delete("/{campaign_id}")
def delete_campaign(campaign_id: str):
if not db.get_campaign(campaign_id):
raise HTTPException(404, "Campaign not found")
db.delete_campaign(campaign_id)
return {"ok": True}
@router.get("/{campaign_id}/settings")
def get_campaign_settings(campaign_id: str):
if not db.get_campaign(campaign_id):
raise HTTPException(404, "Campaign not found")
raw = db.get_campaign_settings(campaign_id)
return merge_campaign_settings_with_env(raw)
@router.post("/{campaign_id}/settings")
def update_campaign_settings(campaign_id: str, body: dict):
if not db.get_campaign(campaign_id):
raise HTTPException(404, "Campaign not found")
clean = {k: str(v) for k, v in body.items() if k in CAMPAIGN_SETTINGS}
db.update_campaign_settings(campaign_id, clean)
raw = db.get_campaign_settings(campaign_id)
return merge_campaign_settings_with_env(raw)