aac51bf183
Implement schema v2 migration, outline/setting/inspiration CRUD, unified TipTap editing, reference panel with mentions, FTS global search, chapter version history, writing landmarks, word frequency analysis, light theme contrast fixes, and full unit/E2E test coverage. Co-authored-by: Cursor <cursoragent@cursor.com>
71 lines
2.4 KiB
SQL
71 lines
2.4 KiB
SQL
CREATE TABLE IF NOT EXISTS outline_items (
|
|
id TEXT PRIMARY KEY,
|
|
parent_id TEXT,
|
|
title TEXT NOT NULL,
|
|
description TEXT DEFAULT '',
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
expected_word_count INTEGER DEFAULT NULL,
|
|
chapter_id TEXT,
|
|
sort_order INTEGER NOT NULL DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
FOREIGN KEY (parent_id) REFERENCES outline_items(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (chapter_id) REFERENCES chapters(id) ON DELETE SET NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS settings (
|
|
id TEXT PRIMARY KEY,
|
|
type TEXT NOT NULL,
|
|
name TEXT NOT NULL,
|
|
description TEXT DEFAULT '',
|
|
properties TEXT DEFAULT '{}',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS setting_chapter_refs (
|
|
setting_id TEXT NOT NULL,
|
|
chapter_id TEXT NOT NULL,
|
|
PRIMARY KEY (setting_id, chapter_id),
|
|
FOREIGN KEY (setting_id) REFERENCES settings(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (chapter_id) REFERENCES chapters(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS inspiration (
|
|
id TEXT PRIMARY KEY,
|
|
title TEXT NOT NULL DEFAULT '',
|
|
content TEXT NOT NULL DEFAULT '',
|
|
tags TEXT DEFAULT '[]',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS snapshots (
|
|
id TEXT PRIMARY KEY,
|
|
chapter_id TEXT NOT NULL,
|
|
type TEXT NOT NULL,
|
|
name TEXT DEFAULT '',
|
|
content TEXT NOT NULL,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
FOREIGN KEY (chapter_id) REFERENCES chapters(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS bookmarks (
|
|
id TEXT PRIMARY KEY,
|
|
chapter_id TEXT NOT NULL,
|
|
position INTEGER NOT NULL,
|
|
label TEXT NOT NULL,
|
|
landmark_type TEXT NOT NULL DEFAULT 'todo',
|
|
resolved INTEGER NOT NULL DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
FOREIGN KEY (chapter_id) REFERENCES chapters(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE VIRTUAL TABLE IF NOT EXISTS search_fts USING fts5(
|
|
source_kind,
|
|
source_id,
|
|
title,
|
|
body,
|
|
tokenize='unicode61'
|
|
);
|