STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
configs_store.py
Go to the documentation of this file.
1"""Per-user named config library. `/api/configs` CRUD.
2
3The stored payload is an engine design: `{"input": <PintleEngineConfig>,
4"output": <last results>}`. The store itself is payload-agnostic -- the frontend
5decides what goes in; load hands the blob back and the UI rehydrates it.
6
7Identity is X-Auth-Email (from Caddy) with a `local` dev fallback -- there is no
8gating here, only whose folder to use. See backend/userdata.py.
9"""
10
11from fastapi import APIRouter, HTTPException, Request
12from pydantic import BaseModel
13
14from backend import userdata
15
16router = APIRouter(prefix="/api/configs", tags=["configs"])
17
18
19class SaveRequest(BaseModel):
20 name: str
21 config: dict # {"input": ..., "output": ...}; not validated here
22
23
24@router.get("")
25def list_configs(request: Request):
26 """Saved configs for the caller, newest first (metadata only)."""
27 return {"configs": userdata.list_configs(userdata.current_user(request))}
28
29
30@router.get("/{slug}")
31def get_config(slug: str, request: Request):
32 blob = userdata.read_config(userdata.current_user(request), slug)
33 if blob is None:
34 raise HTTPException(status_code=404, detail="No saved config by that name.")
35 return blob
36
37
38@router.post("")
39def save_config(body: SaveRequest, request: Request):
40 """Create or overwrite a named config for the caller."""
41 try:
42 return userdata.write_config(
43 userdata.current_user(request), body.name, body.config
44 )
45 except ValueError as exc:
46 raise HTTPException(status_code=422, detail=str(exc))
47
48
49@router.delete("/{slug}")
50def delete_config(slug: str, request: Request):
51 if not userdata.delete_config(userdata.current_user(request), slug):
52 raise HTTPException(status_code=404, detail="No saved config by that name.")
53 return {"status": "deleted", "slug": slug}
get_config(str slug, Request request)
delete_config(str slug, Request request)
save_config(SaveRequest body, Request request)