From f7e4c3928aba9cb7f5222cb4af67846312bbb435 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sat, 14 Feb 2015 16:11:13 -0500 Subject: Refactoring/simplification of the pull-request about links --- app/Schema/Mysql.php | 83 +++++++++++++++++++++---------------------------- app/Schema/Postgres.php | 76 +++++++++++++++++++------------------------- app/Schema/Sqlite.php | 78 ++++++++++++++++++++-------------------------- 3 files changed, 100 insertions(+), 137 deletions(-) (limited to 'app/Schema') diff --git a/app/Schema/Mysql.php b/app/Schema/Mysql.php index 82dd8428..947a62b3 100644 --- a/app/Schema/Mysql.php +++ b/app/Schema/Mysql.php @@ -10,59 +10,46 @@ const VERSION = 46; function version_46($pdo) { - $pdo->exec("CREATE TABLE link - ( - link_id INT NOT NULL AUTO_INCREMENT, - project_id INT NOT NULL DEFAULT -1, - PRIMARY KEY(link_id) - ) ENGINE=InnoDB CHARSET=utf8"); - $pdo->exec("CREATE TABLE link_label - ( - id INT NOT NULL AUTO_INCREMENT, - link_id INT NOT NULL, - label TEXT NOT NULL, - behaviour INT DEFAULT 2, - PRIMARY KEY(id), - FOREIGN KEY(link_id) REFERENCES link(link_id) ON DELETE CASCADE - ) ENGINE=InnoDB CHARSET=utf8"); - $pdo->exec("CREATE TABLE task_has_links - ( - id INT NOT NULL AUTO_INCREMENT, - link_label_id INT NOT NULL, - task_id INT NOT NULL, - task_inverse_id INT NOT NULL, - PRIMARY KEY(id), - FOREIGN KEY(link_label_id) REFERENCES link_label(id) ON DELETE CASCADE, - FOREIGN KEY(task_id) REFERENCES tasks(id) ON DELETE CASCADE, - FOREIGN KEY(task_inverse_id) REFERENCES tasks(id) ON DELETE CASCADE - ) ENGINE=InnoDB CHARSET=utf8"); + $pdo->exec("CREATE TABLE links ( + id INT NOT NULL AUTO_INCREMENT, + label VARCHAR(255) NOT NULL, + opposite_id INT DEFAULT 0, + PRIMARY KEY(id), + UNIQUE(label) + ) ENGINE=InnoDB CHARSET=utf8"); + + $pdo->exec("CREATE TABLE task_has_links ( + id INT NOT NULL AUTO_INCREMENT, + link_id INT NOT NULL, + task_id INT NOT NULL, + opposite_task_id INT NOT NULL, + FOREIGN KEY(link_id) REFERENCES links(id) ON DELETE CASCADE, + FOREIGN KEY(task_id) REFERENCES tasks(id) ON DELETE CASCADE, + FOREIGN KEY(opposite_task_id) REFERENCES tasks(id) ON DELETE CASCADE, + PRIMARY KEY(id) + ) ENGINE=InnoDB CHARSET=utf8"); + $pdo->exec("CREATE INDEX task_has_links_task_index ON task_has_links(task_id)"); - $pdo->exec("CREATE UNIQUE INDEX task_has_links_unique ON task_has_links(link_label_id, task_id, task_inverse_id)"); - $rq = $pdo->prepare('INSERT INTO link (project_id) VALUES (?)'); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq = $pdo->prepare('INSERT INTO link_label (link_id, label, behaviour) VALUES (?, ?, ?)'); - $rq->execute(array(1, t('relates to'), Link::BEHAVIOUR_BOTH)); - $rq->execute(array(2, t('blocks'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(2, t('is blocked by'), Link::BEHAVIOUR_RIGHT2LEFT)); - $rq->execute(array(3, t('duplicates'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(3, t('is duplicated by'), Link::BEHAVIOUR_RIGHT2LEFT)); - $rq->execute(array(4, t('is a child of'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(4, t('is a parent of'), Link::BEHAVIOUR_RIGHT2LEFT)); - $rq->execute(array(5, t('targets milestone'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(5, t('is a milestone of'), Link::BEHAVIOUR_RIGHT2LEFT)); - $rq->execute(array(6, t('fixes'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(6, t('is fixed by'), Link::BEHAVIOUR_RIGHT2LEFT)); + $pdo->exec("CREATE UNIQUE INDEX task_has_links_unique ON task_has_links(link_id, task_id, opposite_task_id)"); + + $rq = $pdo->prepare('INSERT INTO links (label, opposite_id) VALUES (?, ?)'); + $rq->execute(array('relates to', 0)); + $rq->execute(array('blocks', 3)); + $rq->execute(array('is blocked by', 2)); + $rq->execute(array('duplicates', 5)); + $rq->execute(array('is duplicated by', 4)); + $rq->execute(array('is a child of', 7)); + $rq->execute(array('is a parent of', 6)); + $rq->execute(array('targets milestone', 9)); + $rq->execute(array('is a milestone of', 8)); + $rq->execute(array('fixes', 11)); + $rq->execute(array('is fixed by', 10)); } function version_45($pdo) { $pdo->exec('ALTER TABLE tasks ADD COLUMN date_moved INT DEFAULT 0'); - + /* Update tasks.date_moved from project_activities table if tasks.date_moved = null or 0. * We take max project_activities.date_creation where event_name in task.create','task.move.column * since creation date is always less than task moves @@ -174,7 +161,7 @@ function version_38($pdo) "); $pdo->exec('ALTER TABLE tasks ADD COLUMN swimlane_id INT DEFAULT 0'); - $pdo->exec("ALTER TABLE projects ADD COLUMN default_swimlane VARCHAR(200) DEFAULT '".t('Default swimlane')."'"); + $pdo->exec("ALTER TABLE projects ADD COLUMN default_swimlane VARCHAR(200) DEFAULT 'Default swimlane'"); $pdo->exec("ALTER TABLE projects ADD COLUMN show_default_swimlane INT DEFAULT 1"); } diff --git a/app/Schema/Postgres.php b/app/Schema/Postgres.php index af1f3170..027401ff 100644 --- a/app/Schema/Postgres.php +++ b/app/Schema/Postgres.php @@ -10,50 +10,38 @@ const VERSION = 27; function version_27($pdo) { - $pdo->exec("CREATE TABLE link - ( - link_id SERIAL PRIMARY KEY, - project_id INTEGER NOT NULL DEFAULT -1 - ) ENGINE=InnoDB CHARSET=utf8"); - $pdo->exec("CREATE TABLE link_label - ( - id SERIAL PRIMARY KEY, - link_id INTEGER NOT NULL, - label TEXT NOT NULL, - behaviour INTEGER NOT NULL DEFAULT 2, - FOREIGN KEY(link_id) REFERENCES link(link_id) ON DELETE CASCADE - ) ENGINE=InnoDB CHARSET=utf8"); - $pdo->exec("CREATE TABLE task_has_links - ( - id SERIAL PRIMARY KEY, - link_label_id INTEGER NOT NULL, - task_id INTEGER NOT NULL, - task_inverse_id INTEGER NOT NULL, - FOREIGN KEY(link_label_id) REFERENCES link_label(id) ON DELETE CASCADE, - FOREIGN KEY(task_id) REFERENCES tasks(id) ON DELETE CASCADE, - FOREIGN KEY(task_inverse_id) REFERENCES tasks(id) ON DELETE CASCADE - ) ENGINE=InnoDB CHARSET=utf8"); + $pdo->exec('CREATE TABLE links ( + "id" SERIAL PRIMARY KEY, + "label" VARCHAR(255) NOT NULL, + "opposite_id" INTEGER DEFAULT 0, + UNIQUE("label") + )'); + + $pdo->exec("CREATE TABLE task_has_links ( + id SERIAL PRIMARY KEY, + link_id INTEGER NOT NULL, + task_id INTEGER NOT NULL, + opposite_task_id INTEGER NOT NULL, + FOREIGN KEY(link_id) REFERENCES links(id) ON DELETE CASCADE, + FOREIGN KEY(task_id) REFERENCES tasks(id) ON DELETE CASCADE, + FOREIGN KEY(opposite_task_id) REFERENCES tasks(id) ON DELETE CASCADE + )"); + $pdo->exec("CREATE INDEX task_has_links_task_index ON task_has_links(task_id)"); - $pdo->exec("CREATE UNIQUE INDEX task_has_links_unique ON task_has_links(link_label_id, task_id, task_inverse_id)"); - $rq = $pdo->prepare('INSERT INTO link (project_id) VALUES (?)'); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq = $pdo->prepare('INSERT INTO link_label (link_id, label, behaviour) VALUES (?, ?, ?)'); - $rq->execute(array(1, t('relates to'), Link::BEHAVIOUR_BOTH)); - $rq->execute(array(2, t('blocks'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(2, t('is blocked by'), Link::BEHAVIOUR_RIGHT2LEFT)); - $rq->execute(array(3, t('duplicates'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(3, t('is duplicated by'), Link::BEHAVIOUR_RIGHT2LEFT)); - $rq->execute(array(4, t('is a child of'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(4, t('is a parent of'), Link::BEHAVIOUR_RIGHT2LEFT)); - $rq->execute(array(5, t('targets milestone'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(5, t('is a milestone of'), Link::BEHAVIOUR_RIGHT2LEFT)); - $rq->execute(array(6, t('fixes'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(6, t('is fixed by'), Link::BEHAVIOUR_RIGHT2LEFT)); + $pdo->exec("CREATE UNIQUE INDEX task_has_links_unique ON task_has_links(link_id, task_id, opposite_task_id)"); + + $rq = $pdo->prepare('INSERT INTO links (label, opposite_id) VALUES (?, ?)'); + $rq->execute(array('relates to', 0)); + $rq->execute(array('blocks', 3)); + $rq->execute(array('is blocked by', 2)); + $rq->execute(array('duplicates', 5)); + $rq->execute(array('is duplicated by', 4)); + $rq->execute(array('is a child of', 7)); + $rq->execute(array('is a parent of', 6)); + $rq->execute(array('targets milestone', 9)); + $rq->execute(array('is a milestone of', 8)); + $rq->execute(array('fixes', 11)); + $rq->execute(array('is fixed by', 10)); } function version_26($pdo) @@ -169,7 +157,7 @@ function version_19($pdo) "); $pdo->exec('ALTER TABLE tasks ADD COLUMN swimlane_id INTEGER DEFAULT 0'); - $pdo->exec("ALTER TABLE projects ADD COLUMN default_swimlane VARCHAR(200) DEFAULT '".t('Default swimlane')."'"); + $pdo->exec("ALTER TABLE projects ADD COLUMN default_swimlane VARCHAR(200) DEFAULT 'Default swimlane'"); $pdo->exec("ALTER TABLE projects ADD COLUMN show_default_swimlane BOOLEAN DEFAULT '1'"); } diff --git a/app/Schema/Sqlite.php b/app/Schema/Sqlite.php index 727a32cd..c6dec33f 100644 --- a/app/Schema/Sqlite.php +++ b/app/Schema/Sqlite.php @@ -10,56 +10,44 @@ const VERSION = 45; function version_45($pdo) { - $pdo->exec("CREATE TABLE link - ( - link_id INTEGER PRIMARY KEY, - project_id INTEGER NOT NULL DEFAULT -1 - )"); - $pdo->exec("CREATE TABLE link_label - ( - id INTEGER PRIMARY KEY, - link_id INTEGER NOT NULL, - label TEXT NOT NULL, - behaviour INTEGER DEFAULT '2', - FOREIGN KEY(link_id) REFERENCES link(link_id) ON DELETE CASCADE - )"); - $pdo->exec("CREATE TABLE task_has_links - ( - id INTEGER PRIMARY KEY, - link_label_id INTEGER NOT NULL, - task_id INTEGER NOT NULL, - task_inverse_id INTEGER NOT NULL, - FOREIGN KEY(link_label_id) REFERENCES link_label(id) ON DELETE CASCADE, - FOREIGN KEY(task_id) REFERENCES tasks(id) ON DELETE CASCADE, - FOREIGN KEY(task_inverse_id) REFERENCES tasks(id) ON DELETE CASCADE - )"); + $pdo->exec("CREATE TABLE links ( + id INTEGER PRIMARY KEY, + label TEXT NOT NULL, + opposite_id INTEGER DEFAULT 0, + UNIQUE(label) + )"); + + $pdo->exec("CREATE TABLE task_has_links ( + id INTEGER PRIMARY KEY, + link_id INTEGER NOT NULL, + task_id INTEGER NOT NULL, + opposite_task_id INTEGER NOT NULL, + FOREIGN KEY(link_id) REFERENCES links(id) ON DELETE CASCADE, + FOREIGN KEY(task_id) REFERENCES tasks(id) ON DELETE CASCADE, + FOREIGN KEY(opposite_task_id) REFERENCES tasks(id) ON DELETE CASCADE + )"); + $pdo->exec("CREATE INDEX task_has_links_task_index ON task_has_links(task_id)"); - $pdo->exec("CREATE UNIQUE INDEX task_has_links_unique ON task_has_links(link_label_id, task_id, task_inverse_id)"); - $rq = $pdo->prepare('INSERT INTO link (project_id) VALUES (?)'); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq->execute(array(-1)); - $rq = $pdo->prepare('INSERT INTO link_label (link_id, label, behaviour) VALUES (?, ?, ?)'); - $rq->execute(array(1, t('relates to'), Link::BEHAVIOUR_BOTH)); - $rq->execute(array(2, t('blocks'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(2, t('is blocked by'), Link::BEHAVIOUR_RIGHT2LEFT)); - $rq->execute(array(3, t('duplicates'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(3, t('is duplicated by'), Link::BEHAVIOUR_RIGHT2LEFT)); - $rq->execute(array(4, t('is a child of'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(4, t('is a parent of'), Link::BEHAVIOUR_RIGHT2LEFT)); - $rq->execute(array(5, t('targets milestone'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(5, t('is a milestone of'), Link::BEHAVIOUR_RIGHT2LEFT)); - $rq->execute(array(6, t('fixes'), Link::BEHAVIOUR_LEFT2RIGTH)); - $rq->execute(array(6, t('is fixed by'), Link::BEHAVIOUR_RIGHT2LEFT)); + $pdo->exec("CREATE UNIQUE INDEX task_has_links_unique ON task_has_links(link_id, task_id, opposite_task_id)"); + + $rq = $pdo->prepare('INSERT INTO links (label, opposite_id) VALUES (?, ?)'); + $rq->execute(array('relates to', 0)); + $rq->execute(array('blocks', 3)); + $rq->execute(array('is blocked by', 2)); + $rq->execute(array('duplicates', 5)); + $rq->execute(array('is duplicated by', 4)); + $rq->execute(array('is a child of', 7)); + $rq->execute(array('is a parent of', 6)); + $rq->execute(array('targets milestone', 9)); + $rq->execute(array('is a milestone of', 8)); + $rq->execute(array('fixes', 11)); + $rq->execute(array('is fixed by', 10)); } function version_44($pdo) { $pdo->exec('ALTER TABLE tasks ADD COLUMN date_moved INTEGER DEFAULT 0'); - + /* Update tasks.date_moved from project_activities table if tasks.date_moved = null or 0. * We take max project_activities.date_creation where event_name in task.create','task.move.column * since creation date is always less than task moves @@ -169,7 +157,7 @@ function version_37($pdo) "); $pdo->exec('ALTER TABLE tasks ADD COLUMN swimlane_id INTEGER DEFAULT 0'); - $pdo->exec("ALTER TABLE projects ADD COLUMN default_swimlane TEXT DEFAULT '".t('Default swimlane')."'"); + $pdo->exec("ALTER TABLE projects ADD COLUMN default_swimlane TEXT DEFAULT 'Default swimlane'"); $pdo->exec("ALTER TABLE projects ADD COLUMN show_default_swimlane INTEGER DEFAULT 1"); } -- cgit v1.2.3