Git-Repository für bestehenden archivdms-Code initialisiert, Branch-/Commit-Konvention (feature/<ticket>-<slug>-Branches, Ticket-Prefix in Commit-Nachricht) etabliert.
26 lines
1.3 KiB
SQL
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;
|