128 lines
3.7 KiB
Go
128 lines
3.7 KiB
Go
package schema
|
|
|
|
import (
|
|
"database/sql"
|
|
"log"
|
|
)
|
|
|
|
// statements to setup our database
|
|
var stmts = []string{`
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
user_id INTEGER PRIMARY KEY AUTOINCREMENT
|
|
,user_remote VARCHAR(255)
|
|
,user_login VARCHAR(255)
|
|
,user_access VARCHAR(255)
|
|
,user_secret VARCHAR(255)
|
|
,user_name VARCHAR(255)
|
|
,user_email VARCHAR(255)
|
|
,user_gravatar VARCHAR(255)
|
|
,user_token VARCHAR(255)
|
|
,user_admin BOOLEAN
|
|
,user_active BOOLEAN
|
|
,user_syncing BOOLEAN
|
|
,user_created INTEGER
|
|
,user_updated INTEGER
|
|
,user_synced INTEGER
|
|
,UNIQUE(user_token)
|
|
,UNIQUE(user_remote, user_login)
|
|
);`, `
|
|
CREATE TABLE IF NOT EXISTS perms (
|
|
perm_id INTEGER PRIMARY KEY AUTOINCREMENT
|
|
,user_id INTEGER
|
|
,repo_id INTEGER
|
|
,perm_read BOOLEAN
|
|
,perm_write BOOLEAN
|
|
,perm_admin BOOLEAN
|
|
,perm_created INTEGER
|
|
,perm_updated INTEGER
|
|
,UNIQUE (repo_id, user_id)
|
|
);`, `
|
|
CREATE TABLE IF NOT EXISTS repos (
|
|
repo_id INTEGER PRIMARY KEY AUTOINCREMENT
|
|
,user_id INTEGER
|
|
,repo_remote VARCHAR(255)
|
|
,repo_host VARCHAR(255)
|
|
,repo_owner VARCHAR(255)
|
|
,repo_name VARCHAR(255)
|
|
,repo_url VARCHAR(1024)
|
|
,repo_clone_url VARCHAR(255)
|
|
,repo_git_url VARCHAR(255)
|
|
,repo_ssh_url VARCHAR(255)
|
|
,repo_active BOOLEAN
|
|
,repo_private BOOLEAN
|
|
,repo_privileged BOOLEAN
|
|
,repo_post_commit BOOLEAN
|
|
,repo_pull_request BOOLEAN
|
|
,repo_public_key VARCHAR(4000)
|
|
,repo_private_key VARCHAR(4000)
|
|
,repo_params VARCHAR(4000)
|
|
,repo_timeout INTEGER
|
|
,repo_created INTEGER
|
|
,repo_updated INTEGER
|
|
,UNIQUE(repo_host, repo_owner, repo_name)
|
|
);`, `
|
|
CREATE TABLE IF NOT EXISTS commits (
|
|
commit_id INTEGER PRIMARY KEY AUTOINCREMENT
|
|
,repo_id INTEGER
|
|
,commit_status VARCHAR(255)
|
|
,commit_started INTEGER
|
|
,commit_finished INTEGER
|
|
,commit_duration INTEGER
|
|
,commit_sha VARCHAR(255)
|
|
,commit_branch VARCHAR(255)
|
|
,commit_pr VARCHAR(255)
|
|
,commit_author VARCHAR(255)
|
|
,commit_gravatar VARCHAR(255)
|
|
,commit_timestamp VARCHAR(255)
|
|
,commit_message VARCHAR(255)
|
|
,commit_yaml VARCHAR(4000)
|
|
,commit_created INTEGER
|
|
,commit_updated INTEGER
|
|
,UNIQUE(commit_sha, commit_branch, repo_id)
|
|
);`, `
|
|
CREATE TABLE IF NOT EXISTS output (
|
|
output_id INTEGER PRIMARY KEY AUTOINCREMENT
|
|
,commit_id INTEGER
|
|
,output_raw BLOB
|
|
,UNIQUE(commit_id)
|
|
);`, `
|
|
CREATE TABLE IF NOT EXISTS remotes (
|
|
remote_id INTEGER PRIMARY KEY AUTOINCREMENT
|
|
,remote_type VARCHAR(255)
|
|
,remote_host VARCHAR(255)
|
|
,remote_url VARCHAR(255)
|
|
,remote_api VARCHAR(255)
|
|
,remote_client VARCHAR(255)
|
|
,remote_secret VARCHAR(255)
|
|
,remote_open BOOLEAN
|
|
,UNIQUE(remote_host)
|
|
,UNIQUE(remote_type)
|
|
);`, `
|
|
CREATE TABLE IF NOT EXISTS servers (
|
|
server_id INTEGER PRIMARY KEY AUTOINCREMENT
|
|
,server_name VARCHAR(255)
|
|
,server_host VARCHAR(255)
|
|
,server_user VARCHAR(255)
|
|
,server_pass VARCHAR(255)
|
|
,server_cert VARCHAR(4000)
|
|
,UNIQUE(server_name)
|
|
);`, `
|
|
CREATE TABLE IF NOT EXISTS smtp (
|
|
smtp_id INTEGER PRIMARY KEY AUTOINCREMENT
|
|
,smtp_from VARCHAR(255)
|
|
,smtp_host VARCHAR(255)
|
|
,smtp_port VARCHAR(255)
|
|
,smtp_user VARCHAR(255)
|
|
,smtp_pass VARCHAR(255)
|
|
);`,
|
|
}
|
|
|
|
func Load(db *sql.DB) {
|
|
// execute all setup commands
|
|
for _, stmt := range stmts {
|
|
if _, err := db.Exec(stmt); err != nil {
|
|
// exit on failure since this should never happen
|
|
log.Fatalf("Error generating database schema. %s\n%s", err, stmt)
|
|
}
|
|
}
|
|
}
|