000001_create_db.up.sql

 1CREATE TABLE IF NOT EXISTS settings (
 2  id INTEGER PRIMARY KEY AUTOINCREMENT,
 3  key TEXT NOT NULL UNIQUE,
 4  value TEXT NOT NULL,
 5  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
 6  updated_at DATETIME NOT NULL
 7);
 8
 9CREATE TABLE IF NOT EXISTS user (
10  id INTEGER PRIMARY KEY AUTOINCREMENT,
11  username TEXT UNIQUE,
12  admin BOOLEAN NOT NULL,
13  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
14  updated_at DATETIME NOT NULL
15);
16
17CREATE TABLE IF NOT EXISTS public_key (
18  id INTEGER PRIMARY KEY AUTOINCREMENT,
19  user_id INTEGER NOT NULL,
20  public_key TEXT NOT NULL UNIQUE,
21  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
22  updated_at DATETIME NOT NULL,
23  UNIQUE (user_id, public_key),
24  CONSTRAINT user_id_fk
25    FOREIGN KEY(user_id) REFERENCES user(id)
26    ON DELETE CASCADE
27    ON UPDATE CASCADE
28);
29
30CREATE TABLE IF NOT EXISTS repo (
31  id INTEGER PRIMARY KEY AUTOINCREMENT,
32  name TEXT NOT NULL UNIQUE,
33  project_name TEXT NOT NULL,
34  description TEXT NOT NULL,
35  private BOOLEAN NOT NULL,
36  mirror BOOLEAN NOT NULL,
37  hidden BOOLEAN NOT NULL,
38  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
39  updated_at DATETIME NOT NULL
40);
41
42CREATE TABLE IF NOT EXISTS collab (
43  id INTEGER PRIMARY KEY AUTOINCREMENT,
44  user_id INTEGER NOT NULL,
45  repo_id INTEGER NOT NULL,
46  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
47  updated_at DATETIME NOT NULL,
48  UNIQUE (user_id, repo_id),
49  CONSTRAINT user_id_fk
50    FOREIGN KEY(user_id) REFERENCES user(id)
51    ON DELETE CASCADE
52    ON UPDATE CASCADE,
53  CONSTRAINT repo_id_fk
54    FOREIGN KEY(repo_id) REFERENCES repo(id)
55    ON DELETE CASCADE
56    ON UPDATE CASCADE
57);