39 lines
2.1 KiB
MySQL
39 lines
2.1 KiB
MySQL
|
|
-- 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);
|