← Code-Übersicht

0002_dokumentation.sql

Pfad: migrations/0002_dokumentation.sql

Ext: sql

Größe: 1097 Bytes

Geändert: 2026-07-15 20:30:56+02

-- Migration 0002: Tabelle dokumentation.
-- Markdown-Inhalt, flach, Tags als Array. Kein Status (jede Zeile aktiv).
-- Historie entsteht automatisch via audit-Event-Trigger (history_dokumentation).
-- m:n-Verknuepfung zu prozessen (doku_prozess) folgt mit der prozesse-Tabelle.

CREATE TABLE dokumentation (
    id         bigint      GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    slug       text        NOT NULL UNIQUE,
    titel      text        NOT NULL,
    body       text        NOT NULL DEFAULT '',
    tags       text[]      NOT NULL DEFAULT '{}',
    created_at timestamptz NOT NULL DEFAULT now(),
    updated_at timestamptz NOT NULL DEFAULT now()
);

CREATE INDEX idx_dokumentation_tags ON dokumentation USING gin (tags);

-- Generische Funktion: haelt updated_at bei jeder Aenderung aktuell.
CREATE OR REPLACE FUNCTION audit.fn_touch_updated_at() RETURNS trigger
LANGUAGE plpgsql AS $fn$
BEGIN
    NEW.updated_at := now();
    RETURN NEW;
END;
$fn$;

CREATE TRIGGER trg_touch_updated_at
    BEFORE UPDATE ON dokumentation
    FOR EACH ROW EXECUTE FUNCTION audit.fn_touch_updated_at();