1CREATE TABLE IF NOT EXISTS settings (2 id SERIAL PRIMARY KEY,3 key TEXT NOT NULL UNIQUE,4 value TEXT NOT NULL,5 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,6 updated_at TIMESTAMP NOT NULL7);89CREATE TABLE IF NOT EXISTS users (10 id SERIAL PRIMARY KEY,11 username TEXT NOT NULL UNIQUE,12 admin BOOLEAN NOT NULL,13 password TEXT,14 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,15 updated_at TIMESTAMP NOT NULL16);1718CREATE TABLE IF NOT EXISTS public_keys (19 id SERIAL PRIMARY KEY,20 user_id INTEGER NOT NULL,21 public_key TEXT NOT NULL UNIQUE,22 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,23 updated_at TIMESTAMP NOT NULL,24 CONSTRAINT user_id_fk25 FOREIGN KEY(user_id) REFERENCES users(id)26 ON DELETE CASCADE27 ON UPDATE CASCADE28);2930CREATE TABLE IF NOT EXISTS repos (31 id SERIAL PRIMARY KEY,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 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,40 updated_at TIMESTAMP NOT NULL,41 CONSTRAINT user_id_fk42 FOREIGN KEY(user_id) REFERENCES users(id)43 ON DELETE CASCADE44 ON UPDATE CASCADE45);4647CREATE TABLE IF NOT EXISTS collabs (48 id SERIAL PRIMARY KEY,49 user_id INTEGER NOT NULL,50 repo_id INTEGER NOT NULL,51 access_level INTEGER NOT NULL,52 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,53 updated_at TIMESTAMP NOT NULL,54 UNIQUE (user_id, repo_id),55 CONSTRAINT user_id_fk56 FOREIGN KEY(user_id) REFERENCES users(id)57 ON DELETE CASCADE58 ON UPDATE CASCADE,59 CONSTRAINT repo_id_fk60 FOREIGN KEY(repo_id) REFERENCES repos(id)61 ON DELETE CASCADE62 ON UPDATE CASCADE63);6465CREATE TABLE IF NOT EXISTS lfs_objects (66 id SERIAL PRIMARY KEY,67 oid TEXT NOT NULL,68 size INTEGER NOT NULL,69 repo_id INTEGER NOT NULL,70 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,71 updated_at TIMESTAMP NOT NULL,72 UNIQUE (oid, repo_id),73 CONSTRAINT repo_id_fk74 FOREIGN KEY(repo_id) REFERENCES repos(id)75 ON DELETE CASCADE76 ON UPDATE CASCADE77);7879CREATE TABLE IF NOT EXISTS lfs_locks (80 id SERIAL PRIMARY KEY,81 repo_id INTEGER NOT NULL,82 user_id INTEGER NOT NULL,83 path TEXT NOT NULL,84 refname TEXT,85 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,86 updated_at TIMESTAMP NOT NULL,87 UNIQUE (repo_id, path),88 CONSTRAINT repo_id_fk89 FOREIGN KEY(repo_id) REFERENCES repos(id)90 ON DELETE CASCADE91 ON UPDATE CASCADE,92 CONSTRAINT user_id_fk93 FOREIGN KEY(user_id) REFERENCES users(id)94 ON DELETE CASCADE95 ON UPDATE CASCADE96);9798CREATE TABLE IF NOT EXISTS access_tokens (99 id SERIAL PRIMARY KEY,100 name text NOT NULL,101 token TEXT NOT NULL UNIQUE,102 user_id INTEGER NOT NULL,103 expires_at TIMESTAMP,104 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,105 updated_at TIMESTAMP NOT NULL,106 CONSTRAINT user_id_fk107 FOREIGN KEY (user_id) REFERENCES users(id)108 ON DELETE CASCADE109 ON UPDATE CASCADE110);