sql.go

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