38 lines
2.1 KiB
SQL
38 lines
2.1 KiB
SQL
-- Migration: 005 – User dashboard tables (messages, notes, resources)
|
||
-- Database: SQLite
|
||
|
||
CREATE TABLE IF NOT EXISTS user_messages (
|
||
id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6)))),
|
||
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||
sender_email TEXT NOT NULL,
|
||
subject TEXT NOT NULL,
|
||
body TEXT NOT NULL,
|
||
is_read INTEGER NOT NULL DEFAULT 0,
|
||
created_at DATETIME NOT NULL DEFAULT (datetime('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 TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6)))),
|
||
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||
title TEXT NOT NULL DEFAULT '',
|
||
content TEXT NOT NULL DEFAULT '',
|
||
created_at DATETIME NOT NULL DEFAULT (datetime('now')),
|
||
updated_at DATETIME NOT NULL DEFAULT (datetime('now'))
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_user_notes_user_id ON user_notes(user_id);
|
||
|
||
CREATE TABLE IF NOT EXISTS user_resources (
|
||
id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6)))),
|
||
name TEXT NOT NULL,
|
||
description TEXT,
|
||
url TEXT,
|
||
resource_type TEXT NOT NULL DEFAULT 'link',
|
||
role_name TEXT NOT NULL,
|
||
is_active INTEGER NOT NULL DEFAULT 1,
|
||
created_at DATETIME NOT NULL DEFAULT (datetime('now'))
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_user_resources_role_active ON user_resources(role_name, is_active);
|