first commit

This commit is contained in:
Mateusz Gruszczyński
2026-07-17 15:29:08 +02:00
commit 771494671b
35 changed files with 5020 additions and 0 deletions
+19
View File
@@ -0,0 +1,19 @@
CREATE TABLE IF NOT EXISTS pads (
id INTEGER PRIMARY KEY AUTOINCREMENT,
slug TEXT NOT NULL UNIQUE,
title TEXT NOT NULL,
content TEXT NOT NULL DEFAULT '',
password_hash TEXT,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS revisions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
pad_id INTEGER NOT NULL,
content TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (pad_id) REFERENCES pads(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_revisions_pad_id ON revisions(pad_id, id DESC);
+43
View File
@@ -0,0 +1,43 @@
PRAGMA foreign_keys = ON;
CREATE TABLE IF NOT EXISTS workspaces (
id INTEGER PRIMARY KEY AUTOINCREMENT,
slug TEXT NOT NULL UNIQUE,
title TEXT NOT NULL,
password_hash TEXT,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS notes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
workspace_id INTEGER NOT NULL,
slug TEXT NOT NULL,
title TEXT NOT NULL,
content TEXT NOT NULL DEFAULT '',
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (workspace_id) REFERENCES workspaces(id) ON DELETE CASCADE,
UNIQUE(workspace_id, slug)
);
CREATE TABLE IF NOT EXISTS note_revisions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
note_id INTEGER NOT NULL,
content TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (note_id) REFERENCES notes(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_notes_workspace ON notes(workspace_id, updated_at DESC);
CREATE INDEX IF NOT EXISTS idx_note_revisions_note ON note_revisions(note_id, id DESC);
-- Zachowanie danych z wersji 0.4.x: stara notatka staje się workspace z jedną notatką.
INSERT OR IGNORE INTO workspaces (id, slug, title, password_hash, created_at, updated_at)
SELECT id, slug, title, password_hash, created_at, updated_at FROM pads;
INSERT OR IGNORE INTO notes (id, workspace_id, slug, title, content, created_at, updated_at)
SELECT id, id, 'notatka', title, content, created_at, updated_at FROM pads;
INSERT OR IGNORE INTO note_revisions (id, note_id, content, created_at)
SELECT id, pad_id, content, created_at FROM revisions;