internal/store connects via pgx and runs golang-migrate migrations embedded in the binary (go:embed), so Deklarix stays a single binary despite the move to Postgres. Schema covers the five MVP tables (submission, asset, extraction, finding, evidence_package, participant). extraction, finding and evidence_package are append-only by design: a Postgres trigger rejects UPDATE/DELETE outright, since a corrigible evidence archive isn't an evidence archive. Corrections to a finding are new rows whose supersedes column points at the row they replace (set at INSERT time on the new row, since the trigger blocks UPDATE on the old one) — "currently valid" findings are the ones no other row supersedes. scripts/test.sh now spins up a disposable Postgres container so the store's integration tests (including the append-only guarantee) actually run on every test.sh/release.sh invocation instead of silently skipping for lack of DATABASE_URL. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
12 lines
435 B
SQL
12 lines
435 B
SQL
DROP TRIGGER IF EXISTS evidence_package_append_only ON evidence_package;
|
|
DROP TRIGGER IF EXISTS finding_append_only ON finding;
|
|
DROP TRIGGER IF EXISTS extraction_append_only ON extraction;
|
|
DROP FUNCTION IF EXISTS forbid_update_delete();
|
|
|
|
DROP TABLE IF EXISTS participant;
|
|
DROP TABLE IF EXISTS evidence_package;
|
|
DROP TABLE IF EXISTS finding;
|
|
DROP TABLE IF EXISTS extraction;
|
|
DROP TABLE IF EXISTS asset;
|
|
DROP TABLE IF EXISTS submission;
|