38 lines
1.5 KiB
SQL
38 lines
1.5 KiB
SQL
-- Migration: 005 – User dashboard tables (messages, notes, resources)
|
||
-- Database: PostgreSQL
|
||
|
||
CREATE TABLE IF NOT EXISTS user_messages (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||
sender_email TEXT NOT NULL,
|
||
subject TEXT NOT NULL,
|
||
body TEXT NOT NULL,
|
||
is_read BOOLEAN NOT NULL DEFAULT FALSE,
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_user_messages_user_id_read ON user_messages(user_id, is_read);
|
||
|
||
CREATE TABLE IF NOT EXISTS user_notes (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||
title TEXT NOT NULL DEFAULT '',
|
||
content TEXT NOT NULL DEFAULT '',
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_user_notes_user_id ON user_notes(user_id);
|
||
|
||
CREATE TABLE IF NOT EXISTS user_resources (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
name TEXT NOT NULL,
|
||
description TEXT,
|
||
url TEXT,
|
||
resource_type TEXT NOT NULL DEFAULT 'link',
|
||
role_name TEXT NOT NULL,
|
||
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_user_resources_role_active ON user_resources(role_name, is_active);
|