From f91cf2bc6fb991d93fd7550dbfe00ac7a884c0de Mon Sep 17 00:00:00 2001 From: Forbes Date: Sat, 14 Feb 2026 13:56:26 -0600 Subject: [PATCH] feat(modules): settings_overrides and module_state migration Add migration 016 with two tables for the module system: - settings_overrides: dotted-path config overrides set via admin UI - module_state: per-module enabled/disabled state Update testutil.TruncateAll to include new tables. Ref #94 --- internal/testutil/testutil.go | 1 + migrations/016_module_system.sql | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 migrations/016_module_system.sql diff --git a/internal/testutil/testutil.go b/internal/testutil/testutil.go index 58a0e0f..f00d5a5 100644 --- a/internal/testutil/testutil.go +++ b/internal/testutil/testutil.go @@ -80,6 +80,7 @@ func TruncateAll(t *testing.T, pool *pgxpool.Pool) { _, err := pool.Exec(context.Background(), ` TRUNCATE + settings_overrides, module_state, job_log, jobs, job_definitions, runners, dag_cross_edges, dag_edges, dag_nodes, audit_log, sync_log, api_tokens, sessions, item_files, diff --git a/migrations/016_module_system.sql b/migrations/016_module_system.sql new file mode 100644 index 0000000..52aa47b --- /dev/null +++ b/migrations/016_module_system.sql @@ -0,0 +1,15 @@ +-- 016_module_system.sql — settings overrides and module state persistence + +CREATE TABLE IF NOT EXISTS settings_overrides ( + key TEXT PRIMARY KEY, + value JSONB NOT NULL, + updated_by TEXT NOT NULL, + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +CREATE TABLE IF NOT EXISTS module_state ( + module_id TEXT PRIMARY KEY, + enabled BOOLEAN NOT NULL, + updated_by TEXT NOT NULL, + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +);