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) } } }