Files
archivdms/internal/storage/migrations/014_saved_views.sql
T
patrick 9a24ea29e1 FDN-01: repository & projektgerüst
Git-Repository für bestehenden archivdms-Code initialisiert, Branch-/Commit-Konvention (feature/<ticket>-<slug>-Branches, Ticket-Prefix in Commit-Nachricht) etabliert.
2026-08-11 21:27:53 +02:00

26 lines
1.3 KiB
SQL

-- PROJ: Gespeicherte Suchansichten (SavedViews, Paperless-ngx inspiriert)
-- Doku-only (siehe README.md in diesem Verzeichnis) — die tatsächliche
-- Ausführung passiert idempotent über
-- internal/storage/saved_views.go initSavedViewsSchema(), aufgerufen aus
-- (*Store).initSchema() NACH initDocumentNotesSchema.
--
-- Nutzer speichern ihre aktuelle Such-/Filter-Query als benannte,
-- wiederverwendbare Ansicht. filters ist die serialisierte index.SearchQuery
-- (JSONB, 1:1 wieder einlesbar). Eine Ansicht ist privat für ihren Ersteller,
-- außer is_shared=true -> tenant-weit sichtbar, aber weiterhin nur vom
-- Ersteller änderbar/löschbar (WHERE id + tenant_id + user_id). Create/Update/
-- Delete werden im Audit-Log protokolliert (Nachvollziehbarkeit).
CREATE TABLE IF NOT EXISTS saved_views (
id BIGSERIAL PRIMARY KEY,
tenant_id BIGINT NOT NULL,
user_id BIGINT NOT NULL,
name TEXT NOT NULL,
filters JSONB NOT NULL,
is_shared BOOLEAN NOT NULL DEFAULT false,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_saved_views_tenant_user ON saved_views (tenant_id, user_id);
CREATE INDEX IF NOT EXISTS idx_saved_views_tenant_shared ON saved_views (tenant_id, is_shared) WHERE is_shared;