ikurotime / gitgud

public
main / internal/infra/persistence/sqlite/migrations/0001_init.sql
2.1 KB · SQL Raw
 1CREATE TABLE IF NOT EXISTS users (
 2  id            INTEGER PRIMARY KEY AUTOINCREMENT,
 3  username      TEXT NOT NULL UNIQUE,
 4  email         TEXT NOT NULL,
 5  password_hash TEXT NOT NULL,
 6  created_at    DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
 7);
 8
 9CREATE TABLE IF NOT EXISTS repositories (
10  id             INTEGER PRIMARY KEY AUTOINCREMENT,
11  owner_id       INTEGER NOT NULL REFERENCES users(id),
12  name           TEXT NOT NULL,
13  description    TEXT NOT NULL DEFAULT '',
14  is_private     INTEGER NOT NULL DEFAULT 0,
15  default_branch TEXT NOT NULL DEFAULT 'main',
16  created_at     DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
17  UNIQUE(owner_id, name)
18);
19
20CREATE TABLE IF NOT EXISTS issues (
21  id         INTEGER PRIMARY KEY AUTOINCREMENT,
22  repo_id    INTEGER NOT NULL REFERENCES repositories(id),
23  number     INTEGER NOT NULL,
24  author_id  INTEGER NOT NULL REFERENCES users(id),
25  title      TEXT NOT NULL,
26  body       TEXT NOT NULL DEFAULT '',
27  state      TEXT NOT NULL DEFAULT 'open',
28  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
29  UNIQUE(repo_id, number)
30);
31
32CREATE TABLE IF NOT EXISTS issue_comments (
33  id         INTEGER PRIMARY KEY AUTOINCREMENT,
34  issue_id   INTEGER NOT NULL REFERENCES issues(id),
35  author_id  INTEGER NOT NULL REFERENCES users(id),
36  body       TEXT NOT NULL,
37  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
38);
39
40CREATE TABLE IF NOT EXISTS pull_requests (
41  id          INTEGER PRIMARY KEY AUTOINCREMENT,
42  repo_id     INTEGER NOT NULL REFERENCES repositories(id),
43  number      INTEGER NOT NULL,
44  author_id   INTEGER NOT NULL REFERENCES users(id),
45  title       TEXT NOT NULL,
46  body        TEXT NOT NULL DEFAULT '',
47  base_branch TEXT NOT NULL,
48  head_branch TEXT NOT NULL,
49  state       TEXT NOT NULL DEFAULT 'open',
50  created_at  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
51  UNIQUE(repo_id, number)
52);
53
54CREATE TABLE IF NOT EXISTS pr_comments (
55  id         INTEGER PRIMARY KEY AUTOINCREMENT,
56  pr_id      INTEGER NOT NULL REFERENCES pull_requests(id),
57  author_id  INTEGER NOT NULL REFERENCES users(id),
58  body       TEXT NOT NULL,
59  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
60);