woodpecker/pkg/database/schema/schema.sql
2014-02-07 03:10:01 -07:00

127 lines
3.3 KiB
SQL

DROP TABLE IF EXISTS builds;
DROP TABLE IF EXISTS commits;
DROP TABLE IF EXISTS repos;
DROP TABLE IF EXISTS members;
DROP TABLE IF EXISTS teams;
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS settings;
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT
,email VARCHAR(255) UNIQUE
,password VARCHAR(255)
,token VARCHAR(255) UNIQUE
,name VARCHAR(255)
,gravatar VARCHAR(255)
,created TIMESTAMP
,updated TIMESTAMP
,admin BOOLEAN
,github_login VARCHAR(255)
,github_token VARCHAR(255)
,bitbucket_login VARCHAR(255)
,bitbucket_token VARCHAR(255)
,bitbucket_secret VARCHAR(255)
);
CREATE TABLE teams (
id INTEGER PRIMARY KEY AUTOINCREMENT
,slug VARCHAR(255) UNIQUE
,name VARCHAR(255) UNIQUE
,email VARCHAR(255)
,gravatar VARCHAR(255)
,created TIMESTAMP
,updated TIMESTAMP
);
CREATE TABLE members (
id INTEGER PRIMARY KEY AUTOINCREMENT
,team_id INTEGER
,user_id INTEGER
,role INTEGER
);
CREATE TABLE repos (
id INTEGER PRIMARY KEY AUTOINCREMENT
,slug VARCHAR(1024) UNIQUE
,host VARCHAR(255)
,owner VARCHAR(255)
,name VARCHAR(255)
,private BOOLEAN
,disabled BOOLEAN
,disabled_pr BOOLEAN
,priveleged BOOLEAN
,timeout INTEGER
,scm VARCHAR(25)
,url VARCHAR(1024)
,username VARCHAR(255)
,password VARCHAR(255)
,public_key VARCHAR(1024)
,private_key VARCHAR(1024)
,params VARCHAR(2000)
,created TIMESTAMP
,updated TIMESTAMP
,user_id INTEGER
,team_id INTEGER
);
CREATE TABLE commits (
id INTEGER PRIMARY KEY AUTOINCREMENT
,repo_id INTEGER
,status VARCHAR(255)
,started TIMESTAMP
,finished TIMESTAMP
,duration INTEGER
,hash VARCHAR(255)
,branch VARCHAR(255)
,pull_request VARCHAR(255)
,author VARCHAR(255)
,gravatar VARCHAR(255)
,timestamp VARCHAR(255)
,message VARCHAR(255)
,created TIMESTAMP
,updated TIMESTAMP
);
CREATE TABLE builds (
id INTEGER PRIMARY KEY AUTOINCREMENT
,commit_id INTEGER
,slug VARCHAR(255)
,status VARCHAR(255)
,started TIMESTAMP
,finished TIMESTAMP
,duration INTEGER
,created TIMESTAMP
,updated TIMESTAMP
,stdout BLOB
);
CREATE TABLE settings (
id INTEGER PRIMARY KEY
,github_key VARCHAR(255)
,github_secret VARCHAR(255)
,bitbucket_key VARCHAR(255)
,bitbucket_secret VARCHAR(255)
,smtp_server VARCHAR(1024)
,smtp_port VARCHAR(5)
,smtp_address VARCHAR(1024)
,smtp_username VARCHAR(1024)
,smtp_password VARCHAR(1024)
,hostname VARCHAR(1024)
,scheme VARCHAR(5)
);
CREATE UNIQUE INDEX member_uix ON members (team_id, user_id);
CREATE UNIQUE INDEX commits_uix ON commits (repo_id, hash, branch);
CREATE INDEX member_team_ix ON members (team_id);
CREATE INDEX member_user_ix ON members (user_id);
CREATE INDEX repo_team_ix ON repos (team_id);
CREATE INDEX repo_user_ix ON repos (user_id);
CREATE INDEX commits_repo_ix ON commits (repo_id);
CREATE INDEX commits_repo_branch_ix ON commits (repo_id, branch);
CREATE INDEX builds_commit_ix ON builds (commit_id);
CREATE INDEX builds_commit_slug_ix ON builds (commit_id, slug);