merge: combine all features from both codebases - mobile dashboard + layer panel + notifications + shares + all fixes

This commit is contained in:
Leopoldadmin
2026-07-04 16:43:55 +02:00
parent 0606dbb501
commit be62470b53
79 changed files with 9562 additions and 3132 deletions
+43
View File
@@ -99,6 +99,25 @@ CREATE TABLE IF NOT EXISTS settings (
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
-- ─── Project Folders ───────────────────────────────────
CREATE TABLE IF NOT EXISTS project_folders (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
parent_id TEXT,
owner_id TEXT NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
FOREIGN KEY (parent_id) REFERENCES project_folders(id) ON DELETE CASCADE,
FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_project_folders_parent ON project_folders(parent_id);
CREATE INDEX IF NOT EXISTS idx_project_folders_owner ON project_folders(owner_id);
-- ─── Projects: add folder_id column ─────────────────────
-- NOTE: ALTER TABLE is idempotent-safe via try/catch in adapter; schema.sql
-- is only exec'd on fresh databases. For existing DBs, the adapter runs
-- the ALTER in init().
-- ─── Indexes ────────────────────────────────────────
CREATE INDEX IF NOT EXISTS idx_drawings_project ON drawings(project_id);
CREATE INDEX IF NOT EXISTS idx_layers_drawing ON layers(drawing_id);
@@ -133,3 +152,27 @@ CREATE INDEX IF NOT EXISTS idx_blocks_drawing ON blocks(drawing_id);
CREATE INDEX IF NOT EXISTS idx_notifications_user ON notifications(user_id);
CREATE INDEX IF NOT EXISTS idx_shares_project ON project_shares(project_id);
-- ─── Global Block Folders ─────────────────────────────
CREATE TABLE IF NOT EXISTS global_block_folders (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
parent_id TEXT,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
FOREIGN KEY (parent_id) REFERENCES global_block_folders(id) ON DELETE CASCADE
);
-- ─── Global Blocks ──────────────────────────────────────
CREATE TABLE IF NOT EXISTS global_blocks (
id TEXT PRIMARY KEY,
folder_id TEXT,
name TEXT NOT NULL,
block_data TEXT NOT NULL DEFAULT '{}',
svg_data TEXT,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
FOREIGN KEY (folder_id) REFERENCES global_block_folders(id) ON DELETE SET NULL
);
CREATE INDEX IF NOT EXISTS idx_global_blocks_folder ON global_blocks(folder_id);
CREATE INDEX IF NOT EXISTS idx_global_block_folders_parent ON global_block_folders(parent_id);