text: -- +migrate Up
  
  CREATE TABLE users (
   user_id     INTEGER PRIMARY KEY AUTOINCREMENT
  ,user_login  TEXT
  ,user_token  TEXT
  ,user_secret TEXT
  ,user_expiry INTEGER
  ,user_email  TEXT
  ,user_avatar TEXT
  ,user_active BOOLEAN
  ,user_admin  BOOLEAN
  ,user_hash   TEXT
  
  ,UNIQUE(user_login)
  );
  
  CREATE TABLE repos (
   repo_id            INTEGER PRIMARY KEY AUTOINCREMENT
  ,repo_user_id       INTEGER 
  ,repo_owner         TEXT
  ,repo_name          TEXT
  ,repo_full_name     TEXT
  ,repo_avatar        TEXT
  ,repo_link          TEXT
  ,repo_clone         TEXT
  ,repo_branch        TEXT
  ,repo_timeout       INTEGER
  ,repo_private       BOOLEAN
  ,repo_trusted       BOOLEAN
  ,repo_allow_pr      BOOLEAN
  ,repo_allow_push    BOOLEAN
  ,repo_allow_deploys BOOLEAN
  ,repo_allow_tags    BOOLEAN
  ,repo_hash          TEXT
  
  ,UNIQUE(repo_full_name)
  );
  
  CREATE TABLE stars (
   star_id      INTEGER PRIMARY KEY AUTOINCREMENT
  ,star_repo_id INTEGER
  ,star_user_id INTEGER
  
  ,UNIQUE(star_repo_id, star_user_id)
  );
  
  CREATE INDEX ix_star_user ON stars (star_user_id);
  
  CREATE TABLE keys (
   key_id      INTEGER PRIMARY KEY AUTOINCREMENT
  ,key_repo_id INTEGER
  ,key_public  BLOB
  ,key_private BLOB
  
  ,UNIQUE(key_repo_id)
  );
  
  CREATE TABLE builds (
   build_id        INTEGER PRIMARY KEY AUTOINCREMENT
  ,build_repo_id   INTEGER
  ,build_number    INTEGER
  ,build_event     TEXT
  ,build_status    TEXT
  ,build_enqueued  INTEGER
  ,build_created   INTEGER
  ,build_started   INTEGER
  ,build_finished  INTEGER
  ,build_commit    TEXT
  ,build_branch    TEXT
  ,build_ref       TEXT
  ,build_refspec   TEXT
  ,build_remote    TEXT
  ,build_title     TEXT
  ,build_message   TEXT
  ,build_timestamp INTEGER
  ,build_author    TEXT
  ,build_avatar    TEXT
  ,build_email     TEXT
  ,build_link      TEXT
  
  ,UNIQUE(build_number, build_repo_id)
  );
  
  CREATE INDEX ix_build_repo   ON builds (build_repo_id);
  CREATE INDEX ix_build_author ON builds (build_author);
  
  CREATE TABLE jobs (
   job_id          INTEGER PRIMARY KEY AUTOINCREMENT
  ,job_node_id     INTEGER
  ,job_build_id    INTEGER
  ,job_number      INTEGER
  ,job_status      TEXT
  ,job_exit_code   INTEGER
  ,job_enqueued    INTEGER
  ,job_started     INTEGER
  ,job_finished    INTEGER
  ,job_environment TEXT
  
  ,UNIQUE(job_build_id, job_number)
  );
  
  CREATE INDEX ix_job_build ON jobs (job_build_id);
  CREATE INDEX ix_job_node  ON jobs (job_node_id);
  
  CREATE TABLE IF NOT EXISTS logs (
   log_id     INTEGER PRIMARY KEY AUTOINCREMENT
  ,log_job_id INTEGER
  ,log_data   BLOB
  
  ,UNIQUE(log_job_id)
  );
  
  CREATE TABLE IF NOT EXISTS nodes (
   node_id     INTEGER PRIMARY KEY AUTOINCREMENT
  ,node_addr   TEXT
  ,node_arch   TEXT
  ,node_cert   BLOB
  ,node_key    BLOB
  ,node_ca     BLOB
  );
  
  INSERT INTO nodes VALUES(null, 'unix:///var/run/docker.sock', 'linux_amd64', '', '', '');
  INSERT INTO nodes VALUES(null, 'unix:///var/run/docker.sock', 'linux_amd64', '', '', '');
  
  -- +migrate Down
  
  DROP TABLE nodes;
  DROP TABLE logs;
  DROP TABLE jobs;
  DROP TABLE builds;
  DROP TABLE keys;
  DROP TABLE stars;
  DROP TABLE repos;
  DROP TABLE users;