CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
27 lines
1.0 KiB
PL/PgSQL
27 lines
1.0 KiB
PL/PgSQL
-- VOR-02: Freitext-Vermerke an einer Akte sind nach dem Speichern
|
|
-- unveraenderlich (Akzeptanzkriterium 1), analog zum append-only-Muster aus
|
|
-- 0004_history_append_only fuer workflow_instance_history.
|
|
CREATE TABLE case_notes (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
case_id UUID NOT NULL REFERENCES case_files(id) ON DELETE CASCADE,
|
|
author TEXT NOT NULL CHECK (author <> ''),
|
|
body TEXT NOT NULL CHECK (body <> ''),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX case_notes_case_id_created_at_idx ON case_notes (case_id, created_at);
|
|
|
|
CREATE OR REPLACE FUNCTION case_notes_append_only() RETURNS trigger AS $$
|
|
BEGIN
|
|
RAISE EXCEPTION 'case_notes ist unveraenderlich (append-only)';
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE TRIGGER case_notes_no_update
|
|
BEFORE UPDATE ON case_notes
|
|
FOR EACH ROW EXECUTE FUNCTION case_notes_append_only();
|
|
|
|
CREATE TRIGGER case_notes_no_delete
|
|
BEFORE DELETE ON case_notes
|
|
FOR EACH ROW EXECUTE FUNCTION case_notes_append_only();
|