internal/retentionengine: Frist je Aufbewahrungsklasse als natives Postgres-INTERVAL, Stichtagsberechnung an Postgres delegiert statt eigener Kalenderrechnung (Schaltjahr/Monatsende-Referenzwerte real verifiziert: 2024-02-29+1y=2025-02-28, 2026-01-31+1mo=2026-02-28). Periodischer Job (ListExpiringObjects) beschraenkt sich per DISTINCT ON auf die juengste Klassenzuordnung je Objekt - sonst wuerden Objekte mit mehrfach geaenderter Klasse (RET-01-Historisierung) doppelt auftauchen, real mit einem Zwei-Zuordnungen-Testobjekt bewiesen. Scope bewusst eng gehalten: keine RET-05-Anbindung, keine Vernichtungslogik - das ist Ticket-Scope, dependsOn ist nur RET-01.
10 lines
433 B
SQL
10 lines
433 B
SQL
-- RET-02: Fristenmodell je Aufbewahrungsklasse. duration ist ein
|
|
-- natives Postgres-INTERVAL statt eigener Tage-/Monatszaehlung, damit
|
|
-- Kalenderfaelle (Schaltjahr, Monatsende) exakt Postgres' eigene,
|
|
-- bewaehrte Intervall-Arithmetik nutzen statt eine eigene, potenziell
|
|
-- fehlerhafte Nachbildung.
|
|
CREATE TABLE IF NOT EXISTS retention_class_rules (
|
|
retention_class TEXT PRIMARY KEY,
|
|
duration INTERVAL NOT NULL
|
|
);
|