25 lines
935 B
SQL
25 lines
935 B
SQL
CREATE TABLE notifications
|
|
(
|
|
id BIGINT PRIMARY KEY,
|
|
user_id BIGINT NOT NULL,
|
|
type VARCHAR(20) NOT NULL,
|
|
title VARCHAR(200) NOT NULL,
|
|
content TEXT NOT NULL,
|
|
read BOOLEAN NOT NULL DEFAULT FALSE,
|
|
link VARCHAR(500),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
|
|
CONSTRAINT chk_notification_type CHECK (type IN ('order', 'community', 'system'))
|
|
);
|
|
|
|
CREATE INDEX idx_notifications_user_created ON notifications (user_id, created_at DESC);
|
|
CREATE INDEX idx_notifications_user_read_created ON notifications (user_id, read, created_at DESC);
|
|
CREATE INDEX idx_notifications_user_type_created ON notifications (user_id, type, created_at DESC);
|
|
|
|
CREATE TRIGGER trigger_notifications_updated_at
|
|
BEFORE UPDATE
|
|
ON notifications
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_updated_at_column();
|