arche / internal/archesrv/sql/001_initial.sql

commit 154431fd
 1CREATE TABLE IF NOT EXISTS schema_migrations (
 2    version    INTEGER PRIMARY KEY,
 3    applied_at INTEGER NOT NULL
 4);
 5
 6CREATE TABLE IF NOT EXISTS repos (
 7    id          INTEGER PRIMARY KEY,
 8    name        TEXT    NOT NULL UNIQUE,
 9    description TEXT    NOT NULL DEFAULT '',
10    visibility  TEXT    NOT NULL DEFAULT 'private', -- 'public' | 'private'
11    created_at  INTEGER NOT NULL
12);
13
14CREATE TABLE IF NOT EXISTS users (
15    id            INTEGER PRIMARY KEY,
16    username      TEXT    NOT NULL UNIQUE,
17    password_hash TEXT    NOT NULL,
18    is_admin      INTEGER NOT NULL DEFAULT 0,
19    created_at    INTEGER NOT NULL
20);
21
22CREATE TABLE IF NOT EXISTS api_tokens (
23    id         INTEGER PRIMARY KEY,
24    user_id    INTEGER NOT NULL REFERENCES users(id),
25    token_hash TEXT    NOT NULL UNIQUE,
26    label      TEXT    NOT NULL DEFAULT '',
27    created_at INTEGER NOT NULL
28);
29
30CREATE TABLE IF NOT EXISTS repo_permissions (
31    repo_id INTEGER NOT NULL REFERENCES repos(id),
32    user_id INTEGER NOT NULL REFERENCES users(id),
33    role    TEXT    NOT NULL, -- 'read' | 'write' | 'admin'
34    PRIMARY KEY (repo_id, user_id)
35);
36
37CREATE TABLE IF NOT EXISTS sessions (
38    id         INTEGER PRIMARY KEY,
39    user_id    INTEGER NOT NULL REFERENCES users(id),
40    token      TEXT    NOT NULL UNIQUE,
41    expires_at INTEGER NOT NULL
42);