feat(api): admin settings API endpoints

Add four admin-only endpoints under /api/admin/settings:

- GET  /                — full config (secrets redacted)
- GET  /{module}        — single module config
- PUT  /{module}        — toggle modules + persist config overrides
- POST /{module}/test   — test external connectivity (database, storage)

PUT publishes a settings.changed SSE event. Config overrides are
persisted for future hot-reload support; changes to database/storage/
server/schemas namespaces return restart_required: true.

Wires SettingsRepository into Server struct.

Closes #99
This commit is contained in:
Forbes
2026-02-14 15:15:48 -06:00
parent 319a739adb
commit 8167d9c216
3 changed files with 328 additions and 0 deletions

View File

@@ -51,6 +51,7 @@ type Server struct {
jobDefsDir string
modules *modules.Registry
cfg *config.Config
settings *db.SettingsRepository
}
// NewServer creates a new API server.
@@ -77,6 +78,7 @@ func NewServer(
itemFiles := db.NewItemFileRepository(database)
dag := db.NewDAGRepository(database)
jobs := db.NewJobRepository(database)
settings := db.NewSettingsRepository(database)
seqStore := &dbSequenceStore{db: database, schemas: schemas}
partgen := partnum.NewGenerator(schemas, seqStore)
@@ -103,6 +105,7 @@ func NewServer(
jobDefsDir: jobDefsDir,
modules: registry,
cfg: cfg,
settings: settings,
}
}