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 users (
10 id INTEGER PRIMARY KEY AUTOINCREMENT,
11 username TEXT NOT NULL UNIQUE,
12 admin BOOLEAN NOT NULL,
13 password TEXT,
14 created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
15 updated_at DATETIME NOT NULL
16);
17
18CREATE TABLE IF NOT EXISTS public_keys (
19 id INTEGER PRIMARY KEY AUTOINCREMENT,
20 user_id INTEGER NOT NULL,
21 public_key TEXT NOT NULL UNIQUE,
22 created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
23 updated_at DATETIME NOT NULL,
24 CONSTRAINT user_id_fk
25 FOREIGN KEY(user_id) REFERENCES users(id)
26 ON DELETE CASCADE
27 ON UPDATE CASCADE
28);
29
30CREATE TABLE IF NOT EXISTS repos (
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 user_id INTEGER NOT NULL,
39 created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
40 updated_at DATETIME NOT NULL,
41 CONSTRAINT user_id_fk
42 FOREIGN KEY(user_id) REFERENCES users(id)
43 ON DELETE CASCADE
44 ON UPDATE CASCADE
45);
46
47CREATE TABLE IF NOT EXISTS collabs (
48 id INTEGER PRIMARY KEY AUTOINCREMENT,
49 user_id INTEGER NOT NULL,
50 repo_id INTEGER NOT NULL,
51 access_level INTEGER NOT NULL,
52 created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
53 updated_at DATETIME NOT NULL,
54 UNIQUE (user_id, repo_id),
55 CONSTRAINT user_id_fk
56 FOREIGN KEY(user_id) REFERENCES users(id)
57 ON DELETE CASCADE
58 ON UPDATE CASCADE,
59 CONSTRAINT repo_id_fk
60 FOREIGN KEY(repo_id) REFERENCES repos(id)
61 ON DELETE CASCADE
62 ON UPDATE CASCADE
63);
64
65CREATE TABLE IF NOT EXISTS lfs_objects (
66 id INTEGER PRIMARY KEY AUTOINCREMENT,
67 oid TEXT NOT NULL,
68 size INTEGER NOT NULL,
69 repo_id INTEGER NOT NULL,
70 created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
71 updated_at DATETIME NOT NULL,
72 UNIQUE (oid, repo_id),
73 CONSTRAINT repo_id_fk
74 FOREIGN KEY(repo_id) REFERENCES repos(id)
75 ON DELETE CASCADE
76 ON UPDATE CASCADE
77);
78
79CREATE TABLE IF NOT EXISTS lfs_locks (
80 id INTEGER PRIMARY KEY AUTOINCREMENT,
81 repo_id INTEGER NOT NULL,
82 user_id INTEGER NOT NULL,
83 path TEXT NOT NULL,
84 refname TEXT,
85 created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
86 updated_at DATETIME NOT NULL,
87 UNIQUE (repo_id, path),
88 CONSTRAINT repo_id_fk
89 FOREIGN KEY(repo_id) REFERENCES repos(id)
90 ON DELETE CASCADE
91 ON UPDATE CASCADE,
92 CONSTRAINT user_id_fk
93 FOREIGN KEY(user_id) REFERENCES users(id)
94 ON DELETE CASCADE
95 ON UPDATE CASCADE
96);
97
98CREATE TABLE IF NOT EXISTS access_tokens (
99 id INTEGER primary key autoincrement,
100 token text NOT NULL UNIQUE,
101 name text NOT NULL,
102 user_id INTEGER NOT NULL,
103 expires_at DATETIME,
104 created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
105 updated_at DATETIME NOT NULL,
106 CONSTRAINT user_id_fk
107 FOREIGN KEY (user_id) REFERENCES users(id)
108 ON DELETE CASCADE
109 ON UPDATE CASCADE
110);