Tahinli/forge
public0 watching
★ 0
| 1 | -- Snippets: small, shareable collections of text files owned by one user. Each save writes a |
| 2 | -- revision holding the whole set of files as JSON, so history never depends on later edits. |
| 3 | ( |
| 4 | id TEXT PRIMARY KEY, |
| 5 | owner_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE, |
| 6 | title TEXT NOT NULL, |
| 7 | description TEXT NOT NULL DEFAULT '', |
| 8 | visibility TEXT NOT NULL CHECK (visibility IN ('public','unlisted','private')), |
| 9 | created_at TEXT NOT NULL, |
| 10 | updated_at TEXT NOT NULL |
| 11 | ); |
| 12 | ON snippets (owner_id, updated_at); |
| 13 | |
| 14 | ( |
| 15 | snippet_id TEXT NOT NULL REFERENCES snippets(id) ON DELETE CASCADE, |
| 16 | name TEXT NOT NULL, |
| 17 | content TEXT NOT NULL, |
| 18 | position INTEGER NOT NULL, |
| 19 | PRIMARY KEY (snippet_id, name) |
| 20 | ); |
| 21 | |
| 22 | ( |
| 23 | id TEXT PRIMARY KEY, |
| 24 | snippet_id TEXT NOT NULL REFERENCES snippets(id) ON DELETE CASCADE, |
| 25 | author_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE, |
| 26 | created_at TEXT NOT NULL, |
| 27 | files_json TEXT NOT NULL |
| 28 | ); |
| 29 | ON snippet_revisions (snippet_id, created_at); |