about summary refs log tree commit diff
path: root/sql
diff options
context:
space:
mode:
authorfranck cuny <franck@lumberjaph.net>2011-02-13 16:20:59 +0100
committerfranck cuny <franck@lumberjaph.net>2011-02-13 16:20:59 +0100
commite81938b20ae19d472a6f835f8af01a428b8724de (patch)
treed6cea5e811f60fcd8f3c94ee1d9b4cf247404531 /sql
parentMake jitterbug::Test use the current perl interp (diff)
parentMerge branch 'feature/stack_builds' into devel (diff)
downloadjitterbug-e81938b20ae19d472a6f835f8af01a428b8724de.tar.gz
Merge branch 'devel'
* devel:
  add more tests
  inside the hook, we check if we can add more than one task for this project
  add configuration option to skip some branches; add tests for the Hook
  that's why we want datetime
  use DateTime
  update templates to show informations about running tasks
  column started_when: datetime when the build started
  prepare to update schema again
  display current build if any
  add sql schema for various version
  don't ignore .sql files
  script to migrate/upgrade dbix schema
  add version to our schema
  update templates and css
  we want a find, not a search here
  add pending status to the schema (TODO: need a script to migrate the schema)
  load tasks and display them on the dashboard
Diffstat (limited to 'sql')
-rw-r--r--sql/MySQL/deploy/1/001-auto-__VERSION.sql18
-rw-r--r--sql/MySQL/deploy/1/001-auto.sql46
-rw-r--r--sql/MySQL/deploy/2/001-auto-__VERSION.sql18
-rw-r--r--sql/MySQL/deploy/2/001-auto.sql47
-rw-r--r--sql/MySQL/downgrade/2-1/001-auto.sql12
-rw-r--r--sql/MySQL/upgrade/1-2/001-auto.sql12
-rw-r--r--sql/PostgreSQL/deploy/1/001-auto-__VERSION.sql17
-rw-r--r--sql/PostgreSQL/deploy/1/001-auto.sql63
-rw-r--r--sql/PostgreSQL/deploy/2/001-auto-__VERSION.sql17
-rw-r--r--sql/PostgreSQL/deploy/2/001-auto.sql64
-rw-r--r--sql/PostgreSQL/downgrade/2-1/001-auto.sql12
-rw-r--r--sql/PostgreSQL/upgrade/1-2/001-auto.sql12
-rw-r--r--sql/SQLite/deploy/1/001-auto-__VERSION.sql18
-rw-r--r--sql/SQLite/deploy/1/001-auto.sql42
-rw-r--r--sql/SQLite/deploy/2/001-auto-__VERSION.sql18
-rw-r--r--sql/SQLite/deploy/2/001-auto.sql43
-rw-r--r--sql/SQLite/downgrade/2-1/001-auto.sql47
-rw-r--r--sql/SQLite/upgrade/1-2/001-auto.sql12
-rw-r--r--sql/_source/deploy/1/001-auto-__VERSION.yml312
-rw-r--r--sql/_source/deploy/1/001-auto.yml511
-rw-r--r--sql/_source/deploy/2/001-auto-__VERSION.yml316
-rw-r--r--sql/_source/deploy/2/001-auto.yml525
22 files changed, 2182 insertions, 0 deletions
diff --git a/sql/MySQL/deploy/1/001-auto-__VERSION.sql b/sql/MySQL/deploy/1/001-auto-__VERSION.sql
new file mode 100644
index 0000000..597d180
--- /dev/null
+++ b/sql/MySQL/deploy/1/001-auto-__VERSION.sql
@@ -0,0 +1,18 @@
+-- 
+-- Created by SQL::Translator::Producer::MySQL
+-- Created on Mon Jan 24 21:25:06 2011
+-- 
+;
+SET foreign_key_checks=0;
+--
+-- Table: `dbix_class_deploymenthandler_versions`
+--
+CREATE TABLE `dbix_class_deploymenthandler_versions` (
+  `id` integer NOT NULL auto_increment,
+  `version` varchar(50) NOT NULL,
+  `ddl` text,
+  `upgrade_sql` text,
+  PRIMARY KEY (`id`),
+  UNIQUE `dbix_class_deploymenthandler_versions_version` (`version`)
+);
+SET foreign_key_checks=1
\ No newline at end of file
diff --git a/sql/MySQL/deploy/1/001-auto.sql b/sql/MySQL/deploy/1/001-auto.sql
new file mode 100644
index 0000000..2a8b829
--- /dev/null
+++ b/sql/MySQL/deploy/1/001-auto.sql
@@ -0,0 +1,46 @@
+-- 
+-- Created by SQL::Translator::Producer::MySQL
+-- Created on Mon Jan 24 21:25:06 2011
+-- 
+;
+SET foreign_key_checks=0;
+--
+-- Table: `project`
+--
+CREATE TABLE `project` (
+  `projectid` integer NOT NULL auto_increment,
+  `name` text NOT NULL,
+  `url` text NOT NULL,
+  `description` text NOT NULL,
+  `owner` text NOT NULL,
+  PRIMARY KEY (`projectid`),
+  UNIQUE `project_name` (`name`)
+) ENGINE=InnoDB;
+--
+-- Table: `commit_push`
+--
+CREATE TABLE `commit_push` (
+  `sha256` text NOT NULL,
+  `content` text NOT NULL,
+  `projectid` integer NOT NULL,
+  `timestamp` datetime NOT NULL,
+  INDEX `commit_push_idx_projectid` (`projectid`),
+  PRIMARY KEY (`sha256`),
+  CONSTRAINT `commit_push_fk_projectid` FOREIGN KEY (`projectid`) REFERENCES `project` (`projectid`)
+) ENGINE=InnoDB;
+--
+-- Table: `task`
+--
+CREATE TABLE `task` (
+  `taskid` integer NOT NULL auto_increment,
+  `sha256` text NOT NULL,
+  `projectid` integer NOT NULL,
+  INDEX `task_idx_sha256` (`sha256`),
+  INDEX `task_idx_projectid` (`projectid`),
+  PRIMARY KEY (`taskid`),
+  UNIQUE `task_projectid` (`projectid`),
+  UNIQUE `task_sha256` (`sha256`),
+  CONSTRAINT `task_fk_sha256` FOREIGN KEY (`sha256`) REFERENCES `commit_push` (`sha256`),
+  CONSTRAINT `task_fk_projectid` FOREIGN KEY (`projectid`) REFERENCES `project` (`projectid`)
+) ENGINE=InnoDB;
+SET foreign_key_checks=1
\ No newline at end of file
diff --git a/sql/MySQL/deploy/2/001-auto-__VERSION.sql b/sql/MySQL/deploy/2/001-auto-__VERSION.sql
new file mode 100644
index 0000000..e91854a
--- /dev/null
+++ b/sql/MySQL/deploy/2/001-auto-__VERSION.sql
@@ -0,0 +1,18 @@
+-- 
+-- Created by SQL::Translator::Producer::MySQL
+-- Created on Mon Jan 24 21:26:42 2011
+-- 
+;
+SET foreign_key_checks=0;
+--
+-- Table: `dbix_class_deploymenthandler_versions`
+--
+CREATE TABLE `dbix_class_deploymenthandler_versions` (
+  `id` integer NOT NULL auto_increment,
+  `version` varchar(50) NOT NULL,
+  `ddl` text,
+  `upgrade_sql` text,
+  PRIMARY KEY (`id`),
+  UNIQUE `dbix_class_deploymenthandler_versions_version` (`version`)
+);
+SET foreign_key_checks=1
\ No newline at end of file
diff --git a/sql/MySQL/deploy/2/001-auto.sql b/sql/MySQL/deploy/2/001-auto.sql
new file mode 100644
index 0000000..d208773
--- /dev/null
+++ b/sql/MySQL/deploy/2/001-auto.sql
@@ -0,0 +1,47 @@
+-- 
+-- Created by SQL::Translator::Producer::MySQL
+-- Created on Mon Jan 24 21:26:41 2011
+-- 
+;
+SET foreign_key_checks=0;
+--
+-- Table: `project`
+--
+CREATE TABLE `project` (
+  `projectid` integer NOT NULL auto_increment,
+  `name` text NOT NULL,
+  `url` text NOT NULL,
+  `description` text NOT NULL,
+  `owner` text NOT NULL,
+  PRIMARY KEY (`projectid`),
+  UNIQUE `project_name` (`name`)
+) ENGINE=InnoDB;
+--
+-- Table: `commit_push`
+--
+CREATE TABLE `commit_push` (
+  `sha256` text NOT NULL,
+  `content` text NOT NULL,
+  `projectid` integer NOT NULL,
+  `timestamp` datetime NOT NULL,
+  INDEX `commit_push_idx_projectid` (`projectid`),
+  PRIMARY KEY (`sha256`),
+  CONSTRAINT `commit_push_fk_projectid` FOREIGN KEY (`projectid`) REFERENCES `project` (`projectid`)
+) ENGINE=InnoDB;
+--
+-- Table: `task`
+--
+CREATE TABLE `task` (
+  `taskid` integer NOT NULL auto_increment,
+  `sha256` text NOT NULL,
+  `projectid` integer NOT NULL,
+  `running` bool NOT NULL DEFAULT '0',
+  INDEX `task_idx_sha256` (`sha256`),
+  INDEX `task_idx_projectid` (`projectid`),
+  PRIMARY KEY (`taskid`),
+  UNIQUE `task_projectid` (`projectid`),
+  UNIQUE `task_sha256` (`sha256`),
+  CONSTRAINT `task_fk_sha256` FOREIGN KEY (`sha256`) REFERENCES `commit_push` (`sha256`),
+  CONSTRAINT `task_fk_projectid` FOREIGN KEY (`projectid`) REFERENCES `project` (`projectid`)
+) ENGINE=InnoDB;
+SET foreign_key_checks=1
\ No newline at end of file
diff --git a/sql/MySQL/downgrade/2-1/001-auto.sql b/sql/MySQL/downgrade/2-1/001-auto.sql
new file mode 100644
index 0000000..3285916
--- /dev/null
+++ b/sql/MySQL/downgrade/2-1/001-auto.sql
@@ -0,0 +1,12 @@
+-- Convert schema 'sql/_source/deploy/2/001-auto.yml' to 'sql/_source/deploy/1/001-auto.yml':;
+
+;
+BEGIN;
+
+;
+ALTER TABLE task DROP COLUMN running;
+
+;
+
+COMMIT;
+
diff --git a/sql/MySQL/upgrade/1-2/001-auto.sql b/sql/MySQL/upgrade/1-2/001-auto.sql
new file mode 100644
index 0000000..1183d23
--- /dev/null
+++ b/sql/MySQL/upgrade/1-2/001-auto.sql
@@ -0,0 +1,12 @@
+-- Convert schema 'sql/_source/deploy/1/001-auto.yml' to 'sql/_source/deploy/2/001-auto.yml':;
+
+;
+BEGIN;
+
+;
+ALTER TABLE task ADD COLUMN running bool NOT NULL DEFAULT '0';
+
+;
+
+COMMIT;
+
diff --git a/sql/PostgreSQL/deploy/1/001-auto-__VERSION.sql b/sql/PostgreSQL/deploy/1/001-auto-__VERSION.sql
new file mode 100644
index 0000000..43ecfa6
--- /dev/null
+++ b/sql/PostgreSQL/deploy/1/001-auto-__VERSION.sql
@@ -0,0 +1,17 @@
+-- 
+-- Created by SQL::Translator::Producer::PostgreSQL
+-- Created on Mon Jan 24 21:25:06 2011
+-- 
+;
+--
+-- Table: dbix_class_deploymenthandler_versions
+--
+CREATE TABLE "dbix_class_deploymenthandler_versions" (
+  "id" serial NOT NULL,
+  "version" character varying(50) NOT NULL,
+  "ddl" text,
+  "upgrade_sql" text,
+  PRIMARY KEY ("id"),
+  CONSTRAINT "dbix_class_deploymenthandler_versions_version" UNIQUE ("version")
+);
+
diff --git a/sql/PostgreSQL/deploy/1/001-auto.sql b/sql/PostgreSQL/deploy/1/001-auto.sql
new file mode 100644
index 0000000..3f0a076
--- /dev/null
+++ b/sql/PostgreSQL/deploy/1/001-auto.sql
@@ -0,0 +1,63 @@
+-- 
+-- Created by SQL::Translator::Producer::PostgreSQL
+-- Created on Mon Jan 24 21:25:06 2011
+-- 
+;
+--
+-- Table: project
+--
+CREATE TABLE "project" (
+  "projectid" serial NOT NULL,
+  "name" text NOT NULL,
+  "url" text NOT NULL,
+  "description" text NOT NULL,
+  "owner" text NOT NULL,
+  PRIMARY KEY ("projectid"),
+  CONSTRAINT "project_name" UNIQUE ("name")
+);
+
+;
+--
+-- Table: commit_push
+--
+CREATE TABLE "commit_push" (
+  "sha256" text NOT NULL,
+  "content" text NOT NULL,
+  "projectid" integer NOT NULL,
+  "timestamp" timestamp NOT NULL,
+  PRIMARY KEY ("sha256")
+);
+CREATE INDEX "commit_push_idx_projectid" on "commit_push" ("projectid");
+
+;
+--
+-- Table: task
+--
+CREATE TABLE "task" (
+  "taskid" serial NOT NULL,
+  "sha256" text NOT NULL,
+  "projectid" integer NOT NULL,
+  PRIMARY KEY ("taskid"),
+  CONSTRAINT "task_projectid" UNIQUE ("projectid"),
+  CONSTRAINT "task_sha256" UNIQUE ("sha256")
+);
+CREATE INDEX "task_idx_sha256" on "task" ("sha256");
+CREATE INDEX "task_idx_projectid" on "task" ("projectid");
+
+;
+--
+-- Foreign Key Definitions
+--
+
+;
+ALTER TABLE "commit_push" ADD FOREIGN KEY ("projectid")
+  REFERENCES "project" ("projectid") DEFERRABLE;
+
+;
+ALTER TABLE "task" ADD FOREIGN KEY ("sha256")
+  REFERENCES "commit_push" ("sha256") DEFERRABLE;
+
+;
+ALTER TABLE "task" ADD FOREIGN KEY ("projectid")
+  REFERENCES "project" ("projectid") DEFERRABLE;
+
diff --git a/sql/PostgreSQL/deploy/2/001-auto-__VERSION.sql b/sql/PostgreSQL/deploy/2/001-auto-__VERSION.sql
new file mode 100644
index 0000000..348bca5
--- /dev/null
+++ b/sql/PostgreSQL/deploy/2/001-auto-__VERSION.sql
@@ -0,0 +1,17 @@
+-- 
+-- Created by SQL::Translator::Producer::PostgreSQL
+-- Created on Mon Jan 24 21:26:42 2011
+-- 
+;
+--
+-- Table: dbix_class_deploymenthandler_versions
+--
+CREATE TABLE "dbix_class_deploymenthandler_versions" (
+  "id" serial NOT NULL,
+  "version" character varying(50) NOT NULL,
+  "ddl" text,
+  "upgrade_sql" text,
+  PRIMARY KEY ("id"),
+  CONSTRAINT "dbix_class_deploymenthandler_versions_version" UNIQUE ("version")
+);
+
diff --git a/sql/PostgreSQL/deploy/2/001-auto.sql b/sql/PostgreSQL/deploy/2/001-auto.sql
new file mode 100644
index 0000000..da37dac
--- /dev/null
+++ b/sql/PostgreSQL/deploy/2/001-auto.sql
@@ -0,0 +1,64 @@
+-- 
+-- Created by SQL::Translator::Producer::PostgreSQL
+-- Created on Mon Jan 24 21:26:41 2011
+-- 
+;
+--
+-- Table: project
+--
+CREATE TABLE "project" (
+  "projectid" serial NOT NULL,
+  "name" text NOT NULL,
+  "url" text NOT NULL,
+  "description" text NOT NULL,
+  "owner" text NOT NULL,
+  PRIMARY KEY ("projectid"),
+  CONSTRAINT "project_name" UNIQUE ("name")
+);
+
+;
+--
+-- Table: commit_push
+--
+CREATE TABLE "commit_push" (
+  "sha256" text NOT NULL,
+  "content" text NOT NULL,
+  "projectid" integer NOT NULL,
+  "timestamp" timestamp NOT NULL,
+  PRIMARY KEY ("sha256")
+);
+CREATE INDEX "commit_push_idx_projectid" on "commit_push" ("projectid");
+
+;
+--
+-- Table: task
+--
+CREATE TABLE "task" (
+  "taskid" serial NOT NULL,
+  "sha256" text NOT NULL,
+  "projectid" integer NOT NULL,
+  "running" bool DEFAULT '0' NOT NULL,
+  PRIMARY KEY ("taskid"),
+  CONSTRAINT "task_projectid" UNIQUE ("projectid"),
+  CONSTRAINT "task_sha256" UNIQUE ("sha256")
+);
+CREATE INDEX "task_idx_sha256" on "task" ("sha256");
+CREATE INDEX "task_idx_projectid" on "task" ("projectid");
+
+;
+--
+-- Foreign Key Definitions
+--
+
+;
+ALTER TABLE "commit_push" ADD FOREIGN KEY ("projectid")
+  REFERENCES "project" ("projectid") DEFERRABLE;
+
+;
+ALTER TABLE "task" ADD FOREIGN KEY ("sha256")
+  REFERENCES "commit_push" ("sha256") DEFERRABLE;
+
+;
+ALTER TABLE "task" ADD FOREIGN KEY ("projectid")
+  REFERENCES "project" ("projectid") DEFERRABLE;
+
diff --git a/sql/PostgreSQL/downgrade/2-1/001-auto.sql b/sql/PostgreSQL/downgrade/2-1/001-auto.sql
new file mode 100644
index 0000000..3285916
--- /dev/null
+++ b/sql/PostgreSQL/downgrade/2-1/001-auto.sql
@@ -0,0 +1,12 @@
+-- Convert schema 'sql/_source/deploy/2/001-auto.yml' to 'sql/_source/deploy/1/001-auto.yml':;
+
+;
+BEGIN;
+
+;
+ALTER TABLE task DROP COLUMN running;
+
+;
+
+COMMIT;
+
diff --git a/sql/PostgreSQL/upgrade/1-2/001-auto.sql b/sql/PostgreSQL/upgrade/1-2/001-auto.sql
new file mode 100644
index 0000000..3edf5df
--- /dev/null
+++ b/sql/PostgreSQL/upgrade/1-2/001-auto.sql
@@ -0,0 +1,12 @@
+-- Convert schema 'sql/_source/deploy/1/001-auto.yml' to 'sql/_source/deploy/2/001-auto.yml':;
+
+;
+BEGIN;
+
+;
+ALTER TABLE task ADD COLUMN running bool DEFAULT '0' NOT NULL;
+
+;
+
+COMMIT;
+
diff --git a/sql/SQLite/deploy/1/001-auto-__VERSION.sql b/sql/SQLite/deploy/1/001-auto-__VERSION.sql
new file mode 100644
index 0000000..6d6e3fa
--- /dev/null
+++ b/sql/SQLite/deploy/1/001-auto-__VERSION.sql
@@ -0,0 +1,18 @@
+-- 
+-- Created by SQL::Translator::Producer::SQLite
+-- Created on Mon Jan 24 21:25:06 2011
+-- 
+
+;
+BEGIN TRANSACTION;
+--
+-- Table: dbix_class_deploymenthandler_versions
+--
+CREATE TABLE dbix_class_deploymenthandler_versions (
+  id INTEGER PRIMARY KEY NOT NULL,
+  version varchar(50) NOT NULL,
+  ddl text,
+  upgrade_sql text
+);
+CREATE UNIQUE INDEX dbix_class_deploymenthandler_versions_version ON dbix_class_deploymenthandler_versions (version);
+COMMIT
\ No newline at end of file
diff --git a/sql/SQLite/deploy/1/001-auto.sql b/sql/SQLite/deploy/1/001-auto.sql
new file mode 100644
index 0000000..804958b
--- /dev/null
+++ b/sql/SQLite/deploy/1/001-auto.sql
@@ -0,0 +1,42 @@
+-- 
+-- Created by SQL::Translator::Producer::SQLite
+-- Created on Mon Jan 24 21:25:06 2011
+-- 
+
+;
+BEGIN TRANSACTION;
+--
+-- Table: project
+--
+CREATE TABLE project (
+  projectid INTEGER PRIMARY KEY NOT NULL,
+  name text NOT NULL,
+  url text NOT NULL,
+  description text NOT NULL,
+  owner text NOT NULL
+);
+CREATE UNIQUE INDEX project_name ON project (name);
+--
+-- Table: commit_push
+--
+CREATE TABLE commit_push (
+  sha256 text NOT NULL,
+  content text NOT NULL,
+  projectid int NOT NULL,
+  timestamp datetime NOT NULL,
+  PRIMARY KEY (sha256)
+);
+CREATE INDEX commit_push_idx_projectid ON commit_push (projectid);
+--
+-- Table: task
+--
+CREATE TABLE task (
+  taskid INTEGER PRIMARY KEY NOT NULL,
+  sha256 text NOT NULL,
+  projectid int NOT NULL
+);
+CREATE INDEX task_idx_sha256 ON task (sha256);
+CREATE INDEX task_idx_projectid ON task (projectid);
+CREATE UNIQUE INDEX task_projectid ON task (projectid);
+CREATE UNIQUE INDEX task_sha256 ON task (sha256);
+COMMIT
\ No newline at end of file
diff --git a/sql/SQLite/deploy/2/001-auto-__VERSION.sql b/sql/SQLite/deploy/2/001-auto-__VERSION.sql
new file mode 100644
index 0000000..8b1bc1f
--- /dev/null
+++ b/sql/SQLite/deploy/2/001-auto-__VERSION.sql
@@ -0,0 +1,18 @@
+-- 
+-- Created by SQL::Translator::Producer::SQLite
+-- Created on Mon Jan 24 21:26:41 2011
+-- 
+
+;
+BEGIN TRANSACTION;
+--
+-- Table: dbix_class_deploymenthandler_versions
+--
+CREATE TABLE dbix_class_deploymenthandler_versions (
+  id INTEGER PRIMARY KEY NOT NULL,
+  version varchar(50) NOT NULL,
+  ddl text,
+  upgrade_sql text
+);
+CREATE UNIQUE INDEX dbix_class_deploymenthandler_versions_version ON dbix_class_deploymenthandler_versions (version);
+COMMIT
\ No newline at end of file
diff --git a/sql/SQLite/deploy/2/001-auto.sql b/sql/SQLite/deploy/2/001-auto.sql
new file mode 100644
index 0000000..45ac741
--- /dev/null
+++ b/sql/SQLite/deploy/2/001-auto.sql
@@ -0,0 +1,43 @@
+-- 
+-- Created by SQL::Translator::Producer::SQLite
+-- Created on Mon Jan 24 21:26:41 2011
+-- 
+
+;
+BEGIN TRANSACTION;
+--
+-- Table: project
+--
+CREATE TABLE project (
+  projectid INTEGER PRIMARY KEY NOT NULL,
+  name text NOT NULL,
+  url text NOT NULL,
+  description text NOT NULL,
+  owner text NOT NULL
+);
+CREATE UNIQUE INDEX project_name ON project (name);
+--
+-- Table: commit_push
+--
+CREATE TABLE commit_push (
+  sha256 text NOT NULL,
+  content text NOT NULL,
+  projectid int NOT NULL,
+  timestamp datetime NOT NULL,
+  PRIMARY KEY (sha256)
+);
+CREATE INDEX commit_push_idx_projectid ON commit_push (projectid);
+--
+-- Table: task
+--
+CREATE TABLE task (
+  taskid INTEGER PRIMARY KEY NOT NULL,
+  sha256 text NOT NULL,
+  projectid int NOT NULL,
+  running bool NOT NULL DEFAULT '0'
+);
+CREATE INDEX task_idx_sha256 ON task (sha256);
+CREATE INDEX task_idx_projectid ON task (projectid);
+CREATE UNIQUE INDEX task_projectid ON task (projectid);
+CREATE UNIQUE INDEX task_sha256 ON task (sha256);
+COMMIT
\ No newline at end of file
diff --git a/sql/SQLite/downgrade/2-1/001-auto.sql b/sql/SQLite/downgrade/2-1/001-auto.sql
new file mode 100644
index 0000000..763b77b
--- /dev/null
+++ b/sql/SQLite/downgrade/2-1/001-auto.sql
@@ -0,0 +1,47 @@
+-- Convert schema 'sql/_source/deploy/2/001-auto.yml' to 'sql/_source/deploy/1/001-auto.yml':;
+
+;
+BEGIN;
+
+;
+CREATE TEMPORARY TABLE task_temp_alter (
+  taskid INTEGER PRIMARY KEY NOT NULL,
+  sha256 text NOT NULL,
+  projectid int NOT NULL
+);
+
+;
+INSERT INTO task_temp_alter SELECT taskid, sha256, projectid FROM task;
+
+;
+DROP TABLE task;
+
+;
+CREATE TABLE task (
+  taskid INTEGER PRIMARY KEY NOT NULL,
+  sha256 text NOT NULL,
+  projectid int NOT NULL
+);
+
+;
+CREATE INDEX task_idx_sha25602 ON task (sha256);
+
+;
+CREATE INDEX task_idx_projectid02 ON task (projectid);
+
+;
+CREATE UNIQUE INDEX task_projectid02 ON task (projectid);
+
+;
+CREATE UNIQUE INDEX task_sha25602 ON task (sha256);
+
+;
+INSERT INTO task SELECT taskid, sha256, projectid FROM task_temp_alter;
+
+;
+DROP TABLE task_temp_alter;
+
+;
+
+COMMIT;
+
diff --git a/sql/SQLite/upgrade/1-2/001-auto.sql b/sql/SQLite/upgrade/1-2/001-auto.sql
new file mode 100644
index 0000000..1183d23
--- /dev/null
+++ b/sql/SQLite/upgrade/1-2/001-auto.sql
@@ -0,0 +1,12 @@
+-- Convert schema 'sql/_source/deploy/1/001-auto.yml' to 'sql/_source/deploy/2/001-auto.yml':;
+
+;
+BEGIN;
+
+;
+ALTER TABLE task ADD COLUMN running bool NOT NULL DEFAULT '0';
+
+;
+
+COMMIT;
+
diff --git a/sql/_source/deploy/1/001-auto-__VERSION.yml b/sql/_source/deploy/1/001-auto-__VERSION.yml
new file mode 100644
index 0000000..8249355
--- /dev/null
+++ b/sql/_source/deploy/1/001-auto-__VERSION.yml
@@ -0,0 +1,312 @@
+---
+schema:
+  procedures: {}
+  tables:
+    dbix_class_deploymenthandler_versions:
+      constraints:
+        - deferrable: 1
+          expression: ''
+          fields:
+            - id
+          match_type: ''
+          name: ''
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: PRIMARY KEY
+        - deferrable: 1
+          expression: ''
+          fields:
+            - version
+          match_type: ''
+          name: dbix_class_deploymenthandler_versions_version
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: UNIQUE
+      fields:
+        ddl:
+          data_type: text
+          default_value: ~
+          is_nullable: 1
+          is_primary_key: 0
+          is_unique: 0
+          name: ddl
+          order: 3
+          size:
+            - 0
+        id:
+          data_type: int
+          default_value: ~
+          is_auto_increment: 1
+          is_nullable: 0
+          is_primary_key: 1
+          is_unique: 0
+          name: id
+          order: 1
+          size:
+            - 0
+        upgrade_sql:
+          data_type: text
+          default_value: ~
+          is_nullable: 1
+          is_primary_key: 0
+          is_unique: 0
+          name: upgrade_sql
+          order: 4
+          size:
+            - 0
+        version:
+          data_type: varchar
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 1
+          name: version
+          order: 2
+          size:
+            - 50
+      indices: []
+      name: dbix_class_deploymenthandler_versions
+      options: []
+      order: 1
+  triggers: {}
+  views: {}
+translator:
+  add_drop_table: 0
+  filename: ~
+  no_comments: 0
+  parser_args:
+    package: &1 !!perl/hash:jitterbug::Schema
+      class_mappings:
+        DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult: __VERSION
+        jitterbug::Schema::Result::Commit: Commit
+        jitterbug::Schema::Result::Project: Project
+        jitterbug::Schema::Result::Task: Task
+      source_registrations:
+        Commit: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            content:
+              data_type: text
+              extra: {}
+            projectid:
+              data_type: int
+              extra: {}
+              is_foreign_key: 1
+            sha256:
+              data_type: text
+              extra: {}
+              is_auto_increment: 0
+            timestamp:
+              _inflate_info:
+                deflate: !!perl/code '{ "DUMMY" }'
+                inflate: !!perl/code '{ "DUMMY" }'
+              data_type: datetime
+              extra: {}
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - sha256
+            - content
+            - projectid
+            - timestamp
+          _primaries: &2
+            - sha256
+          _relationships:
+            project:
+              attrs:
+                accessor: single
+                is_foreign_key_constraint: 1
+                undef_on_null_fk: 1
+              class: jitterbug::Schema::Result::Project
+              cond:
+                foreign.projectid: self.projectid
+              source: jitterbug::Schema::Result::Project
+            tasks:
+              attrs:
+                accessor: multi
+                cascade_copy: 1
+                cascade_delete: 1
+                join_type: LEFT
+              class: jitterbug::Schema::Result::Task
+              cond:
+                foreign.taskid: self.sha256
+              source: jitterbug::Schema::Result::Task
+          _unique_constraints:
+            primary: *2
+          name: commit_push
+          result_class: jitterbug::Schema::Result::Commit
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::ResultSet
+          schema: *1
+          source_name: Commit
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+        Project: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            description:
+              data_type: text
+            name:
+              data_type: text
+            owner:
+              data_type: text
+            projectid:
+              data_type: int
+              is_auto_increment: 1
+            url:
+              data_type: text
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - projectid
+            - name
+            - url
+            - description
+            - owner
+          _primaries: &3
+            - projectid
+          _relationships:
+            commits:
+              attrs:
+                accessor: multi
+                cascade_copy: 1
+                cascade_delete: 1
+                join_type: LEFT
+              class: jitterbug::Schema::Result::Commit
+              cond:
+                foreign.sha256: self.projectid
+              source: jitterbug::Schema::Result::Commit
+            tasks:
+              attrs:
+                accessor: multi
+                cascade_copy: 1
+                cascade_delete: 1
+                join_type: LEFT
+              class: jitterbug::Schema::Result::Task
+              cond:
+                foreign.taskid: self.projectid
+              source: jitterbug::Schema::Result::Task
+          _unique_constraints:
+            primary: *3
+            project_name:
+              - name
+          name: project
+          result_class: jitterbug::Schema::Result::Project
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::ResultSet
+          schema: *1
+          source_name: Project
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+        Task: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            projectid:
+              data_type: int
+              is_foreign_key: 1
+            sha256:
+              data_type: text
+              is_foreign_key: 1
+            taskid:
+              data_type: int
+              is_auto_increment: 1
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - taskid
+            - sha256
+            - projectid
+          _primaries: &4
+            - taskid
+          _relationships:
+            commit:
+              attrs:
+                accessor: single
+                is_foreign_key_constraint: 1
+                undef_on_null_fk: 1
+              class: jitterbug::Schema::Result::Commit
+              cond:
+                foreign.sha256: self.sha256
+              source: jitterbug::Schema::Result::Commit
+            project:
+              attrs:
+                accessor: single
+                is_foreign_key_constraint: 1
+                undef_on_null_fk: 1
+              class: jitterbug::Schema::Result::Project
+              cond:
+                foreign.projectid: self.projectid
+              source: jitterbug::Schema::Result::Project
+          _unique_constraints:
+            primary: *4
+            task_projectid:
+              - projectid
+            task_sha256:
+              - sha256
+          name: task
+          result_class: jitterbug::Schema::Result::Task
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::ResultSet
+          schema: *1
+          source_name: Task
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+        __VERSION: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            ddl:
+              data_type: text
+              is_nullable: 1
+            id:
+              data_type: int
+              is_auto_increment: 1
+            upgrade_sql:
+              data_type: text
+              is_nullable: 1
+            version:
+              data_type: varchar
+              size: 50
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - id
+            - version
+            - ddl
+            - upgrade_sql
+          _primaries: &5
+            - id
+          _relationships: {}
+          _unique_constraints:
+            dbix_class_deploymenthandler_versions_version:
+              - version
+            primary: *5
+          name: dbix_class_deploymenthandler_versions
+          result_class: DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResultSet
+          schema: *1
+          source_name: __VERSION
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+      storage: !!perl/hash:DBIx::Class::Storage::DBI
+        _connect_info:
+          - dbi:SQLite:dbname=jitterbug.db
+        _dbh_gen: 0
+        _dbi_connect_info:
+          - dbi:SQLite:dbname=jitterbug.db
+          - ~
+          - ~
+          - &6
+            AutoCommit: 1
+            PrintError: 0
+            RaiseError: 1
+        _dbic_connect_attributes: *6
+        _in_dbh_do: 0
+        _sql_maker: ~
+        _sql_maker_opts: {}
+        debugobj: !!perl/hash:DBIx::Class::Storage::Statistics {}
+        savepoints: []
+        schema: *1
+        transaction_depth: 0
+    sources:
+      - __VERSION
+  parser_type: SQL::Translator::Parser::DBIx::Class
+  producer_args: {}
+  producer_type: SQL::Translator::Producer::YAML
+  show_warnings: 0
+  trace: 0
+  version: 0.11007
diff --git a/sql/_source/deploy/1/001-auto.yml b/sql/_source/deploy/1/001-auto.yml
new file mode 100644
index 0000000..a237f76
--- /dev/null
+++ b/sql/_source/deploy/1/001-auto.yml
@@ -0,0 +1,511 @@
+---
+schema:
+  procedures: {}
+  tables:
+    commit_push:
+      constraints:
+        - deferrable: 1
+          expression: ''
+          fields:
+            - sha256
+          match_type: ''
+          name: ''
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: PRIMARY KEY
+        - deferrable: 1
+          expression: ''
+          fields:
+            - projectid
+          match_type: ''
+          name: commit_push_fk_projectid
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields:
+            - projectid
+          reference_table: project
+          type: FOREIGN KEY
+      fields:
+        content:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 0
+          name: content
+          order: 2
+          size:
+            - 0
+        projectid:
+          data_type: int
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 0
+          name: projectid
+          order: 3
+          size:
+            - 0
+        sha256:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 1
+          is_unique: 0
+          name: sha256
+          order: 1
+          size:
+            - 0
+        timestamp:
+          data_type: datetime
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 0
+          name: timestamp
+          order: 4
+          size:
+            - 0
+      indices:
+        - fields:
+            - projectid
+          name: commit_push_idx_projectid
+          options: []
+          type: NORMAL
+      name: commit_push
+      options: []
+      order: 2
+    project:
+      constraints:
+        - deferrable: 1
+          expression: ''
+          fields:
+            - projectid
+          match_type: ''
+          name: ''
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: PRIMARY KEY
+        - deferrable: 1
+          expression: ''
+          fields:
+            - name
+          match_type: ''
+          name: project_name
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: UNIQUE
+      fields:
+        description:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 0
+          name: description
+          order: 4
+          size:
+            - 0
+        name:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 1
+          name: name
+          order: 2
+          size:
+            - 0
+        owner:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 0
+          name: owner
+          order: 5
+          size:
+            - 0
+        projectid:
+          data_type: int
+          default_value: ~
+          is_auto_increment: 1
+          is_nullable: 0
+          is_primary_key: 1
+          is_unique: 0
+          name: projectid
+          order: 1
+          size:
+            - 0
+        url:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 0
+          name: url
+          order: 3
+          size:
+            - 0
+      indices: []
+      name: project
+      options: []
+      order: 1
+    task:
+      constraints:
+        - deferrable: 1
+          expression: ''
+          fields:
+            - taskid
+          match_type: ''
+          name: ''
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: PRIMARY KEY
+        - deferrable: 1
+          expression: ''
+          fields:
+            - projectid
+          match_type: ''
+          name: task_projectid
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: UNIQUE
+        - deferrable: 1
+          expression: ''
+          fields:
+            - sha256
+          match_type: ''
+          name: task_sha256
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: UNIQUE
+        - deferrable: 1
+          expression: ''
+          fields:
+            - sha256
+          match_type: ''
+          name: task_fk_sha256
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields:
+            - sha256
+          reference_table: commit_push
+          type: FOREIGN KEY
+        - deferrable: 1
+          expression: ''
+          fields:
+            - projectid
+          match_type: ''
+          name: task_fk_projectid
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields:
+            - projectid
+          reference_table: project
+          type: FOREIGN KEY
+      fields:
+        projectid:
+          data_type: int
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 1
+          name: projectid
+          order: 3
+          size:
+            - 0
+        sha256:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 1
+          name: sha256
+          order: 2
+          size:
+            - 0
+        taskid:
+          data_type: int
+          default_value: ~
+          is_auto_increment: 1
+          is_nullable: 0
+          is_primary_key: 1
+          is_unique: 0
+          name: taskid
+          order: 1
+          size:
+            - 0
+      indices:
+        - fields:
+            - sha256
+          name: task_idx_sha256
+          options: []
+          type: NORMAL
+        - fields:
+            - projectid
+          name: task_idx_projectid
+          options: []
+          type: NORMAL
+      name: task
+      options: []
+      order: 3
+  triggers: {}
+  views: {}
+translator:
+  add_drop_table: 0
+  filename: ~
+  no_comments: 0
+  parser_args:
+    package: &1 !!perl/hash:jitterbug::Schema
+      class_mappings:
+        DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult: __VERSION
+        jitterbug::Schema::Result::Commit: Commit
+        jitterbug::Schema::Result::Project: Project
+        jitterbug::Schema::Result::Task: Task
+      source_registrations:
+        Commit: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            content:
+              data_type: text
+              extra: {}
+            projectid:
+              data_type: int
+              extra: {}
+              is_foreign_key: 1
+            sha256:
+              data_type: text
+              extra: {}
+              is_auto_increment: 0
+            timestamp:
+              _inflate_info:
+                deflate: !!perl/code '{ "DUMMY" }'
+                inflate: !!perl/code '{ "DUMMY" }'
+              data_type: datetime
+              extra: {}
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - sha256
+            - content
+            - projectid
+            - timestamp
+          _primaries: &2
+            - sha256
+          _relationships:
+            project:
+              attrs:
+                accessor: single
+                is_foreign_key_constraint: 1
+                undef_on_null_fk: 1
+              class: jitterbug::Schema::Result::Project
+              cond:
+                foreign.projectid: self.projectid
+              source: jitterbug::Schema::Result::Project
+            tasks:
+              attrs:
+                accessor: multi
+                cascade_copy: 1
+                cascade_delete: 1
+                join_type: LEFT
+              class: jitterbug::Schema::Result::Task
+              cond:
+                foreign.taskid: self.sha256
+              source: jitterbug::Schema::Result::Task
+          _unique_constraints:
+            primary: *2
+          name: commit_push
+          result_class: jitterbug::Schema::Result::Commit
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::ResultSet
+          schema: *1
+          source_name: Commit
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+        Project: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            description:
+              data_type: text
+            name:
+              data_type: text
+            owner:
+              data_type: text
+            projectid:
+              data_type: int
+              is_auto_increment: 1
+            url:
+              data_type: text
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - projectid
+            - name
+            - url
+            - description
+            - owner
+          _primaries: &3
+            - projectid
+          _relationships:
+            commits:
+              attrs:
+                accessor: multi
+                cascade_copy: 1
+                cascade_delete: 1
+                join_type: LEFT
+              class: jitterbug::Schema::Result::Commit
+              cond:
+                foreign.sha256: self.projectid
+              source: jitterbug::Schema::Result::Commit
+            tasks:
+              attrs:
+                accessor: multi
+                cascade_copy: 1
+                cascade_delete: 1
+                join_type: LEFT
+              class: jitterbug::Schema::Result::Task
+              cond:
+                foreign.taskid: self.projectid
+              source: jitterbug::Schema::Result::Task
+          _unique_constraints:
+            primary: *3
+            project_name:
+              - name
+          name: project
+          result_class: jitterbug::Schema::Result::Project
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::ResultSet
+          schema: *1
+          source_name: Project
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+        Task: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            projectid:
+              data_type: int
+              is_foreign_key: 1
+            sha256:
+              data_type: text
+              is_foreign_key: 1
+            taskid:
+              data_type: int
+              is_auto_increment: 1
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - taskid
+            - sha256
+            - projectid
+          _primaries: &4
+            - taskid
+          _relationships:
+            commit:
+              attrs:
+                accessor: single
+                is_foreign_key_constraint: 1
+                undef_on_null_fk: 1
+              class: jitterbug::Schema::Result::Commit
+              cond:
+                foreign.sha256: self.sha256
+              source: jitterbug::Schema::Result::Commit
+            project:
+              attrs:
+                accessor: single
+                is_foreign_key_constraint: 1
+                undef_on_null_fk: 1
+              class: jitterbug::Schema::Result::Project
+              cond:
+                foreign.projectid: self.projectid
+              source: jitterbug::Schema::Result::Project
+          _unique_constraints:
+            primary: *4
+            task_projectid:
+              - projectid
+            task_sha256:
+              - sha256
+          name: task
+          result_class: jitterbug::Schema::Result::Task
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::ResultSet
+          schema: *1
+          source_name: Task
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+        __VERSION: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            ddl:
+              data_type: text
+              is_nullable: 1
+            id:
+              data_type: int
+              is_auto_increment: 1
+            upgrade_sql:
+              data_type: text
+              is_nullable: 1
+            version:
+              data_type: varchar
+              size: 50
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - id
+            - version
+            - ddl
+            - upgrade_sql
+          _primaries: &5
+            - id
+          _relationships: {}
+          _unique_constraints:
+            dbix_class_deploymenthandler_versions_version:
+              - version
+            primary: *5
+          name: dbix_class_deploymenthandler_versions
+          result_class: DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResultSet
+          schema: *1
+          source_name: __VERSION
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+      storage: !!perl/hash:DBIx::Class::Storage::DBI
+        _connect_info:
+          - dbi:SQLite:dbname=jitterbug.db
+        _dbh_gen: 0
+        _dbi_connect_info:
+          - dbi:SQLite:dbname=jitterbug.db
+          - ~
+          - ~
+          - &6
+            AutoCommit: 1
+            PrintError: 0
+            RaiseError: 1
+        _dbic_connect_attributes: *6
+        _in_dbh_do: 0
+        _sql_maker: ~
+        _sql_maker_opts: {}
+        debugobj: !!perl/hash:DBIx::Class::Storage::Statistics {}
+        savepoints: []
+        schema: *1
+        transaction_depth: 0
+    sources:
+      - Commit
+      - Project
+      - Task
+  parser_type: SQL::Translator::Parser::DBIx::Class
+  producer_args: {}
+  producer_type: SQL::Translator::Producer::YAML
+  show_warnings: 0
+  trace: 0
+  version: 0.11007
diff --git a/sql/_source/deploy/2/001-auto-__VERSION.yml b/sql/_source/deploy/2/001-auto-__VERSION.yml
new file mode 100644
index 0000000..7179e7f
--- /dev/null
+++ b/sql/_source/deploy/2/001-auto-__VERSION.yml
@@ -0,0 +1,316 @@
+---
+schema:
+  procedures: {}
+  tables:
+    dbix_class_deploymenthandler_versions:
+      constraints:
+        - deferrable: 1
+          expression: ''
+          fields:
+            - id
+          match_type: ''
+          name: ''
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: PRIMARY KEY
+        - deferrable: 1
+          expression: ''
+          fields:
+            - version
+          match_type: ''
+          name: dbix_class_deploymenthandler_versions_version
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: UNIQUE
+      fields:
+        ddl:
+          data_type: text
+          default_value: ~
+          is_nullable: 1
+          is_primary_key: 0
+          is_unique: 0
+          name: ddl
+          order: 3
+          size:
+            - 0
+        id:
+          data_type: int
+          default_value: ~
+          is_auto_increment: 1
+          is_nullable: 0
+          is_primary_key: 1
+          is_unique: 0
+          name: id
+          order: 1
+          size:
+            - 0
+        upgrade_sql:
+          data_type: text
+          default_value: ~
+          is_nullable: 1
+          is_primary_key: 0
+          is_unique: 0
+          name: upgrade_sql
+          order: 4
+          size:
+            - 0
+        version:
+          data_type: varchar
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 1
+          name: version
+          order: 2
+          size:
+            - 50
+      indices: []
+      name: dbix_class_deploymenthandler_versions
+      options: []
+      order: 1
+  triggers: {}
+  views: {}
+translator:
+  add_drop_table: 0
+  filename: ~
+  no_comments: 0
+  parser_args:
+    package: &1 !!perl/hash:jitterbug::Schema
+      class_mappings:
+        DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult: __VERSION
+        jitterbug::Schema::Result::Commit: Commit
+        jitterbug::Schema::Result::Project: Project
+        jitterbug::Schema::Result::Task: Task
+      source_registrations:
+        Commit: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            content:
+              data_type: text
+              extra: {}
+            projectid:
+              data_type: int
+              extra: {}
+              is_foreign_key: 1
+            sha256:
+              data_type: text
+              extra: {}
+              is_auto_increment: 0
+            timestamp:
+              _inflate_info:
+                deflate: !!perl/code '{ "DUMMY" }'
+                inflate: !!perl/code '{ "DUMMY" }'
+              data_type: datetime
+              extra: {}
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - sha256
+            - content
+            - projectid
+            - timestamp
+          _primaries: &2
+            - sha256
+          _relationships:
+            project:
+              attrs:
+                accessor: single
+                is_foreign_key_constraint: 1
+                undef_on_null_fk: 1
+              class: jitterbug::Schema::Result::Project
+              cond:
+                foreign.projectid: self.projectid
+              source: jitterbug::Schema::Result::Project
+            tasks:
+              attrs:
+                accessor: multi
+                cascade_copy: 1
+                cascade_delete: 1
+                join_type: LEFT
+              class: jitterbug::Schema::Result::Task
+              cond:
+                foreign.taskid: self.sha256
+              source: jitterbug::Schema::Result::Task
+          _unique_constraints:
+            primary: *2
+          name: commit_push
+          result_class: jitterbug::Schema::Result::Commit
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::ResultSet
+          schema: *1
+          source_name: Commit
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+        Project: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            description:
+              data_type: text
+            name:
+              data_type: text
+            owner:
+              data_type: text
+            projectid:
+              data_type: int
+              is_auto_increment: 1
+            url:
+              data_type: text
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - projectid
+            - name
+            - url
+            - description
+            - owner
+          _primaries: &3
+            - projectid
+          _relationships:
+            commits:
+              attrs:
+                accessor: multi
+                cascade_copy: 1
+                cascade_delete: 1
+                join_type: LEFT
+              class: jitterbug::Schema::Result::Commit
+              cond:
+                foreign.sha256: self.projectid
+              source: jitterbug::Schema::Result::Commit
+            tasks:
+              attrs:
+                accessor: multi
+                cascade_copy: 1
+                cascade_delete: 1
+                join_type: LEFT
+              class: jitterbug::Schema::Result::Task
+              cond:
+                foreign.taskid: self.projectid
+              source: jitterbug::Schema::Result::Task
+          _unique_constraints:
+            primary: *3
+            project_name:
+              - name
+          name: project
+          result_class: jitterbug::Schema::Result::Project
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::ResultSet
+          schema: *1
+          source_name: Project
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+        Task: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            projectid:
+              data_type: int
+              is_foreign_key: 1
+            running:
+              data_type: bool
+              default_value: 0
+            sha256:
+              data_type: text
+              is_foreign_key: 1
+            taskid:
+              data_type: int
+              is_auto_increment: 1
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - taskid
+            - sha256
+            - projectid
+            - running
+          _primaries: &4
+            - taskid
+          _relationships:
+            commit:
+              attrs:
+                accessor: single
+                is_foreign_key_constraint: 1
+                undef_on_null_fk: 1
+              class: jitterbug::Schema::Result::Commit
+              cond:
+                foreign.sha256: self.sha256
+              source: jitterbug::Schema::Result::Commit
+            project:
+              attrs:
+                accessor: single
+                is_foreign_key_constraint: 1
+                undef_on_null_fk: 1
+              class: jitterbug::Schema::Result::Project
+              cond:
+                foreign.projectid: self.projectid
+              source: jitterbug::Schema::Result::Project
+          _unique_constraints:
+            primary: *4
+            task_projectid:
+              - projectid
+            task_sha256:
+              - sha256
+          name: task
+          result_class: jitterbug::Schema::Result::Task
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::ResultSet
+          schema: *1
+          source_name: Task
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+        __VERSION: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            ddl:
+              data_type: text
+              is_nullable: 1
+            id:
+              data_type: int
+              is_auto_increment: 1
+            upgrade_sql:
+              data_type: text
+              is_nullable: 1
+            version:
+              data_type: varchar
+              size: 50
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - id
+            - version
+            - ddl
+            - upgrade_sql
+          _primaries: &5
+            - id
+          _relationships: {}
+          _unique_constraints:
+            dbix_class_deploymenthandler_versions_version:
+              - version
+            primary: *5
+          name: dbix_class_deploymenthandler_versions
+          result_class: DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResultSet
+          schema: *1
+          source_name: __VERSION
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+      storage: !!perl/hash:DBIx::Class::Storage::DBI
+        _connect_info:
+          - dbi:SQLite:dbname=jitterbug.db
+        _dbh_gen: 0
+        _dbi_connect_info:
+          - dbi:SQLite:dbname=jitterbug.db
+          - ~
+          - ~
+          - &6
+            AutoCommit: 1
+            PrintError: 0
+            RaiseError: 1
+        _dbic_connect_attributes: *6
+        _in_dbh_do: 0
+        _sql_maker: ~
+        _sql_maker_opts: {}
+        debugobj: !!perl/hash:DBIx::Class::Storage::Statistics {}
+        savepoints: []
+        schema: *1
+        transaction_depth: 0
+    sources:
+      - __VERSION
+  parser_type: SQL::Translator::Parser::DBIx::Class
+  producer_args: {}
+  producer_type: SQL::Translator::Producer::YAML
+  show_warnings: 0
+  trace: 0
+  version: 0.11007
diff --git a/sql/_source/deploy/2/001-auto.yml b/sql/_source/deploy/2/001-auto.yml
new file mode 100644
index 0000000..f13eec2
--- /dev/null
+++ b/sql/_source/deploy/2/001-auto.yml
@@ -0,0 +1,525 @@
+---
+schema:
+  procedures: {}
+  tables:
+    commit_push:
+      constraints:
+        - deferrable: 1
+          expression: ''
+          fields:
+            - sha256
+          match_type: ''
+          name: ''
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: PRIMARY KEY
+        - deferrable: 1
+          expression: ''
+          fields:
+            - projectid
+          match_type: ''
+          name: commit_push_fk_projectid
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields:
+            - projectid
+          reference_table: project
+          type: FOREIGN KEY
+      fields:
+        content:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 0
+          name: content
+          order: 2
+          size:
+            - 0
+        projectid:
+          data_type: int
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 0
+          name: projectid
+          order: 3
+          size:
+            - 0
+        sha256:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 1
+          is_unique: 0
+          name: sha256
+          order: 1
+          size:
+            - 0
+        timestamp:
+          data_type: datetime
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 0
+          name: timestamp
+          order: 4
+          size:
+            - 0
+      indices:
+        - fields:
+            - projectid
+          name: commit_push_idx_projectid
+          options: []
+          type: NORMAL
+      name: commit_push
+      options: []
+      order: 2
+    project:
+      constraints:
+        - deferrable: 1
+          expression: ''
+          fields:
+            - projectid
+          match_type: ''
+          name: ''
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: PRIMARY KEY
+        - deferrable: 1
+          expression: ''
+          fields:
+            - name
+          match_type: ''
+          name: project_name
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: UNIQUE
+      fields:
+        description:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 0
+          name: description
+          order: 4
+          size:
+            - 0
+        name:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 1
+          name: name
+          order: 2
+          size:
+            - 0
+        owner:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 0
+          name: owner
+          order: 5
+          size:
+            - 0
+        projectid:
+          data_type: int
+          default_value: ~
+          is_auto_increment: 1
+          is_nullable: 0
+          is_primary_key: 1
+          is_unique: 0
+          name: projectid
+          order: 1
+          size:
+            - 0
+        url:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 0
+          name: url
+          order: 3
+          size:
+            - 0
+      indices: []
+      name: project
+      options: []
+      order: 1
+    task:
+      constraints:
+        - deferrable: 1
+          expression: ''
+          fields:
+            - taskid
+          match_type: ''
+          name: ''
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: PRIMARY KEY
+        - deferrable: 1
+          expression: ''
+          fields:
+            - projectid
+          match_type: ''
+          name: task_projectid
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: UNIQUE
+        - deferrable: 1
+          expression: ''
+          fields:
+            - sha256
+          match_type: ''
+          name: task_sha256
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields: []
+          reference_table: ''
+          type: UNIQUE
+        - deferrable: 1
+          expression: ''
+          fields:
+            - sha256
+          match_type: ''
+          name: task_fk_sha256
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields:
+            - sha256
+          reference_table: commit_push
+          type: FOREIGN KEY
+        - deferrable: 1
+          expression: ''
+          fields:
+            - projectid
+          match_type: ''
+          name: task_fk_projectid
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields:
+            - projectid
+          reference_table: project
+          type: FOREIGN KEY
+      fields:
+        projectid:
+          data_type: int
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 1
+          name: projectid
+          order: 3
+          size:
+            - 0
+        running:
+          data_type: bool
+          default_value: 0
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 0
+          name: running
+          order: 4
+          size:
+            - 0
+        sha256:
+          data_type: text
+          default_value: ~
+          is_nullable: 0
+          is_primary_key: 0
+          is_unique: 1
+          name: sha256
+          order: 2
+          size:
+            - 0
+        taskid:
+          data_type: int
+          default_value: ~
+          is_auto_increment: 1
+          is_nullable: 0
+          is_primary_key: 1
+          is_unique: 0
+          name: taskid
+          order: 1
+          size:
+            - 0
+      indices:
+        - fields:
+            - sha256
+          name: task_idx_sha256
+          options: []
+          type: NORMAL
+        - fields:
+            - projectid
+          name: task_idx_projectid
+          options: []
+          type: NORMAL
+      name: task
+      options: []
+      order: 3
+  triggers: {}
+  views: {}
+translator:
+  add_drop_table: 0
+  filename: ~
+  no_comments: 0
+  parser_args:
+    package: &1 !!perl/hash:jitterbug::Schema
+      class_mappings:
+        DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult: __VERSION
+        jitterbug::Schema::Result::Commit: Commit
+        jitterbug::Schema::Result::Project: Project
+        jitterbug::Schema::Result::Task: Task
+      source_registrations:
+        Commit: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            content:
+              data_type: text
+              extra: {}
+            projectid:
+              data_type: int
+              extra: {}
+              is_foreign_key: 1
+            sha256:
+              data_type: text
+              extra: {}
+              is_auto_increment: 0
+            timestamp:
+              _inflate_info:
+                deflate: !!perl/code '{ "DUMMY" }'
+                inflate: !!perl/code '{ "DUMMY" }'
+              data_type: datetime
+              extra: {}
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - sha256
+            - content
+            - projectid
+            - timestamp
+          _primaries: &2
+            - sha256
+          _relationships:
+            project:
+              attrs:
+                accessor: single
+                is_foreign_key_constraint: 1
+                undef_on_null_fk: 1
+              class: jitterbug::Schema::Result::Project
+              cond:
+                foreign.projectid: self.projectid
+              source: jitterbug::Schema::Result::Project
+            tasks:
+              attrs:
+                accessor: multi
+                cascade_copy: 1
+                cascade_delete: 1
+                join_type: LEFT
+              class: jitterbug::Schema::Result::Task
+              cond:
+                foreign.taskid: self.sha256
+              source: jitterbug::Schema::Result::Task
+          _unique_constraints:
+            primary: *2
+          name: commit_push
+          result_class: jitterbug::Schema::Result::Commit
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::ResultSet
+          schema: *1
+          source_name: Commit
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+        Project: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            description:
+              data_type: text
+            name:
+              data_type: text
+            owner:
+              data_type: text
+            projectid:
+              data_type: int
+              is_auto_increment: 1
+            url:
+              data_type: text
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - projectid
+            - name
+            - url
+            - description
+            - owner
+          _primaries: &3
+            - projectid
+          _relationships:
+            commits:
+              attrs:
+                accessor: multi
+                cascade_copy: 1
+                cascade_delete: 1
+                join_type: LEFT
+              class: jitterbug::Schema::Result::Commit
+              cond:
+                foreign.sha256: self.projectid
+              source: jitterbug::Schema::Result::Commit
+            tasks:
+              attrs:
+                accessor: multi
+                cascade_copy: 1
+                cascade_delete: 1
+                join_type: LEFT
+              class: jitterbug::Schema::Result::Task
+              cond:
+                foreign.taskid: self.projectid
+              source: jitterbug::Schema::Result::Task
+          _unique_constraints:
+            primary: *3
+            project_name:
+              - name
+          name: project
+          result_class: jitterbug::Schema::Result::Project
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::ResultSet
+          schema: *1
+          source_name: Project
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+        Task: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            projectid:
+              data_type: int
+              is_foreign_key: 1
+            running:
+              data_type: bool
+              default_value: 0
+            sha256:
+              data_type: text
+              is_foreign_key: 1
+            taskid:
+              data_type: int
+              is_auto_increment: 1
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - taskid
+            - sha256
+            - projectid
+            - running
+          _primaries: &4
+            - taskid
+          _relationships:
+            commit:
+              attrs:
+                accessor: single
+                is_foreign_key_constraint: 1
+                undef_on_null_fk: 1
+              class: jitterbug::Schema::Result::Commit
+              cond:
+                foreign.sha256: self.sha256
+              source: jitterbug::Schema::Result::Commit
+            project:
+              attrs:
+                accessor: single
+                is_foreign_key_constraint: 1
+                undef_on_null_fk: 1
+              class: jitterbug::Schema::Result::Project
+              cond:
+                foreign.projectid: self.projectid
+              source: jitterbug::Schema::Result::Project
+          _unique_constraints:
+            primary: *4
+            task_projectid:
+              - projectid
+            task_sha256:
+              - sha256
+          name: task
+          result_class: jitterbug::Schema::Result::Task
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::ResultSet
+          schema: *1
+          source_name: Task
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+        __VERSION: !!perl/hash:DBIx::Class::ResultSource::Table
+          _columns:
+            ddl:
+              data_type: text
+              is_nullable: 1
+            id:
+              data_type: int
+              is_auto_increment: 1
+            upgrade_sql:
+              data_type: text
+              is_nullable: 1
+            version:
+              data_type: varchar
+              size: 50
+          _columns_info_loaded: 0
+          _ordered_columns:
+            - id
+            - version
+            - ddl
+            - upgrade_sql
+          _primaries: &5
+            - id
+          _relationships: {}
+          _unique_constraints:
+            dbix_class_deploymenthandler_versions_version:
+              - version
+            primary: *5
+          name: dbix_class_deploymenthandler_versions
+          result_class: DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult
+          resultset_attributes: {}
+          resultset_class: DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResultSet
+          schema: *1
+          source_name: __VERSION
+          sqlt_deploy_callback: default_sqlt_deploy_hook
+      storage: !!perl/hash:DBIx::Class::Storage::DBI
+        _connect_info:
+          - dbi:SQLite:dbname=jitterbug.db
+        _dbh_gen: 0
+        _dbi_connect_info:
+          - dbi:SQLite:dbname=jitterbug.db
+          - ~
+          - ~
+          - &6
+            AutoCommit: 1
+            PrintError: 0
+            RaiseError: 1
+        _dbic_connect_attributes: *6
+        _in_dbh_do: 0
+        _sql_maker: ~
+        _sql_maker_opts: {}
+        debugobj: !!perl/hash:DBIx::Class::Storage::Statistics {}
+        savepoints: []
+        schema: *1
+        transaction_depth: 0
+    sources:
+      - Commit
+      - Project
+      - Task
+  parser_type: SQL::Translator::Parser::DBIx::Class
+  producer_args: {}
+  producer_type: SQL::Translator::Producer::YAML
+  show_warnings: 0
+  trace: 0
+  version: 0.11007