A deployable markdown editor that connects with your self hosted files and lets you edit in a beautiful interface
at main 57 lines 2.0 kB view raw
1-- Users table 2CREATE TABLE IF NOT EXISTS users ( 3 id INTEGER PRIMARY KEY AUTOINCREMENT, 4 github_id INTEGER UNIQUE, 5 username TEXT NOT NULL, 6 email TEXT, 7 avatar_url TEXT, 8 last_repo TEXT, 9 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 10 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP 11); 12 13-- Sessions/Tokens (encrypted access tokens) 14CREATE TABLE IF NOT EXISTS auth_tokens ( 15 id INTEGER PRIMARY KEY AUTOINCREMENT, 16 user_id INTEGER NOT NULL, 17 provider TEXT NOT NULL, 18 access_token TEXT NOT NULL, 19 refresh_token TEXT, 20 expires_at DATETIME, 21 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 22 UNIQUE(user_id, provider), 23 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE 24); 25 26-- Branch state tracking 27CREATE TABLE IF NOT EXISTS branch_states ( 28 id INTEGER PRIMARY KEY AUTOINCREMENT, 29 user_id INTEGER NOT NULL, 30 repo_full_name TEXT NOT NULL, 31 branch_name TEXT NOT NULL, 32 base_branch TEXT DEFAULT 'main', 33 last_push_at DATETIME NOT NULL, 34 has_uncommitted_changes BOOLEAN DEFAULT FALSE, 35 file_paths TEXT, 36 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 37 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, 38 UNIQUE(user_id, repo_full_name), 39 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE 40); 41 42-- Work-in-progress content (auto-save buffer) 43CREATE TABLE IF NOT EXISTS draft_content ( 44 id INTEGER PRIMARY KEY AUTOINCREMENT, 45 user_id INTEGER NOT NULL, 46 repo_full_name TEXT NOT NULL, 47 file_path TEXT NOT NULL, 48 content TEXT NOT NULL, 49 last_saved_at DATETIME DEFAULT CURRENT_TIMESTAMP, 50 UNIQUE(user_id, repo_full_name, file_path), 51 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE 52); 53 54-- Indexes for performance 55CREATE INDEX IF NOT EXISTS idx_auth_tokens_user_provider ON auth_tokens(user_id, provider); 56CREATE INDEX IF NOT EXISTS idx_branch_states_user_repo ON branch_states(user_id, repo_full_name); 57CREATE INDEX IF NOT EXISTS idx_draft_content_user_repo_file ON draft_content(user_id, repo_full_name, file_path);