Files
dashboard/backend/src/database/migrations/020_create_notifications.sql
Matthias Hochmeister 5a6fc85a75 add features
2026-03-03 17:01:53 +01:00

33 lines
1.3 KiB
SQL

-- Migration 020: Create notifications table
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE TABLE IF NOT EXISTS notifications (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
typ VARCHAR(50) NOT NULL,
titel VARCHAR(500) NOT NULL,
nachricht TEXT NOT NULL,
schwere VARCHAR(20) NOT NULL DEFAULT 'info'
CHECK (schwere IN ('info', 'warnung', 'fehler')),
gelesen BOOLEAN NOT NULL DEFAULT FALSE,
gelesen_am TIMESTAMPTZ,
link VARCHAR(500),
quell_id VARCHAR(100),
quell_typ VARCHAR(50),
erstellt_am TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- Fast lookup for unread badge count
CREATE INDEX IF NOT EXISTS notifications_user_unread_idx
ON notifications (user_id, gelesen)
WHERE NOT gelesen;
-- Fast lookup for notification list ordered by date
CREATE INDEX IF NOT EXISTS notifications_user_date_idx
ON notifications (user_id, erstellt_am DESC);
-- Dedup index: one unread notification per (user, source type, source id)
CREATE UNIQUE INDEX IF NOT EXISTS notifications_dedup_idx
ON notifications (user_id, quell_typ, quell_id)
WHERE NOT gelesen AND quell_typ IS NOT NULL AND quell_id IS NOT NULL;