internal/store/migrations/0054_snippets.up.sql

4e7f0573d0c35b2ec41de44f17f8fe45d3cd2408
gitbay/internal/store/migrations/0054_snippets.up.sql history · blame · raw

20 lines · 885 bytes

 1-- Snippets: named text files a user owns and shares by URL, outside any
 2-- repository. public_id is the opaque id in URLs and commands.
 3CREATE TABLE snippets (
 4    id          INTEGER PRIMARY KEY,
 5    public_id   TEXT NOT NULL UNIQUE,
 6    owner_id    INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
 7    description TEXT NOT NULL DEFAULT '',
 8    visibility  TEXT NOT NULL CHECK (visibility IN ('public','unlisted','private')),
 9    created_at  TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
10    updated_at  TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now'))
11);
12CREATE INDEX snippets_owner ON snippets(owner_id, id);
13
14CREATE TABLE snippet_files (
15    snippet_id INTEGER NOT NULL REFERENCES snippets(id) ON DELETE CASCADE,
16    name       TEXT NOT NULL,
17    content    BLOB NOT NULL,
18    size       INTEGER NOT NULL,
19    PRIMARY KEY (snippet_id, name)
20);