diff options
author | Frederic Guillot <fred@kanboard.net> | 2015-06-20 14:34:47 -0400 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2015-06-20 14:34:47 -0400 |
commit | aa6fdd3544b64eeab3d577c58425e128c809a135 (patch) | |
tree | 388de73e11567e8927bc12694cc65a3c629f6a59 /app/Schema | |
parent | d3f789764dcf90923a0d0f639dd2ee56b1177f84 (diff) |
Improve automatic action duplication with unit tests and improve database schema
Diffstat (limited to 'app/Schema')
-rw-r--r-- | app/Schema/Mysql.php | 37 | ||||
-rw-r--r-- | app/Schema/Postgres.php | 38 | ||||
-rw-r--r-- | app/Schema/Sqlite.php | 52 |
3 files changed, 99 insertions, 28 deletions
diff --git a/app/Schema/Mysql.php b/app/Schema/Mysql.php index bcb365bd..21b7a4de 100644 --- a/app/Schema/Mysql.php +++ b/app/Schema/Mysql.php @@ -6,7 +6,42 @@ use PDO; use Core\Security; use Model\Link; -const VERSION = 73; +const VERSION = 74; + +function version_74($pdo) +{ + $pdo->exec('ALTER TABLE project_has_categories MODIFY project_id INT NOT NULL'); + $pdo->exec('ALTER TABLE project_has_categories MODIFY name VARCHAR(255) NOT NULL'); + + $pdo->exec('ALTER TABLE actions MODIFY project_id INT NOT NULL'); + $pdo->exec('ALTER TABLE actions MODIFY event_name VARCHAR(50) NOT NULL'); + $pdo->exec('ALTER TABLE actions MODIFY action_name VARCHAR(50) NOT NULL'); + + $pdo->exec('ALTER TABLE action_has_params MODIFY action_id INT NOT NULL'); + $pdo->exec('ALTER TABLE action_has_params MODIFY name VARCHAR(50) NOT NULL'); + $pdo->exec('ALTER TABLE action_has_params MODIFY value VARCHAR(50) NOT NULL'); + + $pdo->exec('ALTER TABLE files MODIFY name VARCHAR(255) NOT NULL'); + $pdo->exec('ALTER TABLE files MODIFY task_id INT NOT NULL'); + + $pdo->exec('ALTER TABLE subtasks MODIFY title VARCHAR(255) NOT NULL'); + + $pdo->exec('ALTER TABLE tasks MODIFY project_id INT NOT NULL'); + $pdo->exec('ALTER TABLE tasks MODIFY column_id INT NOT NULL'); + + $pdo->exec('ALTER TABLE columns MODIFY title VARCHAR(255) NOT NULL'); + $pdo->exec('ALTER TABLE columns MODIFY project_id INT NOT NULL'); + + $pdo->exec('ALTER TABLE project_has_users MODIFY project_id INT NOT NULL'); + $pdo->exec('ALTER TABLE project_has_users MODIFY user_id INT NOT NULL'); + + $pdo->exec('ALTER TABLE projects MODIFY name VARCHAR(255) NOT NULL UNIQUE'); + + $pdo->exec('ALTER TABLE users MODIFY username VARCHAR(50) NOT NULL'); + + $pdo->exec('ALTER TABLE user_has_notifications MODIFY project_id INT NOT NULL'); + $pdo->exec('ALTER TABLE user_has_notifications MODIFY user_id INT NOT NULL'); +} function version_73($pdo) { diff --git a/app/Schema/Postgres.php b/app/Schema/Postgres.php index 65a9c9bf..a8b76399 100644 --- a/app/Schema/Postgres.php +++ b/app/Schema/Postgres.php @@ -6,7 +6,43 @@ use PDO; use Core\Security; use Model\Link; -const VERSION = 53; +const VERSION = 54; + +function version_54($pdo) +{ + $pdo->exec("ALTER TABLE project_has_categories ALTER COLUMN project_id SET NOT NULL"); + $pdo->exec("ALTER TABLE project_has_categories ALTER COLUMN name SET NOT NULL"); + + $pdo->exec("ALTER TABLE actions ALTER COLUMN project_id SET NOT NULL"); + $pdo->exec("ALTER TABLE actions ALTER COLUMN event_name SET NOT NULL"); + $pdo->exec("ALTER TABLE actions ALTER COLUMN action_name SET NOT NULL"); + + $pdo->exec("ALTER TABLE action_has_params ALTER COLUMN action_id SET NOT NULL"); + $pdo->exec("ALTER TABLE action_has_params ALTER COLUMN name SET NOT NULL"); + $pdo->exec("ALTER TABLE action_has_params ALTER COLUMN value SET NOT NULL"); + + $pdo->exec("ALTER TABLE files ALTER COLUMN name SET NOT NULL"); + $pdo->exec("ALTER TABLE files ALTER COLUMN task_id SET NOT NULL"); + + $pdo->exec("ALTER TABLE subtasks ALTER COLUMN title SET NOT NULL"); + + $pdo->exec("ALTER TABLE tasks ALTER COLUMN title SET NOT NULL"); + $pdo->exec("ALTER TABLE tasks ALTER COLUMN project_id SET NOT NULL"); + $pdo->exec("ALTER TABLE tasks ALTER COLUMN column_id SET NOT NULL"); + + $pdo->exec("ALTER TABLE columns ALTER COLUMN title SET NOT NULL"); + $pdo->exec("ALTER TABLE columns ALTER COLUMN project_id SET NOT NULL"); + + $pdo->exec("ALTER TABLE project_has_users ALTER COLUMN project_id SET NOT NULL"); + $pdo->exec("ALTER TABLE project_has_users ALTER COLUMN user_id SET NOT NULL"); + + $pdo->exec("ALTER TABLE projects ALTER COLUMN name SET NOT NULL"); + + $pdo->exec("ALTER TABLE users ALTER COLUMN username SET NOT NULL"); + + $pdo->exec("ALTER TABLE user_has_notifications ALTER COLUMN user_id SET NOT NULL"); + $pdo->exec("ALTER TABLE user_has_notifications ALTER COLUMN user_id SET NOT NULL"); +} function version_53($pdo) { diff --git a/app/Schema/Sqlite.php b/app/Schema/Sqlite.php index ceb3028c..6ad7f34a 100644 --- a/app/Schema/Sqlite.php +++ b/app/Schema/Sqlite.php @@ -429,10 +429,10 @@ function version_37($pdo) $pdo->exec(" CREATE TABLE swimlanes ( id INTEGER PRIMARY KEY, - name TEXT, + name TEXT NOT NULL, position INTEGER DEFAULT 1, is_active INTEGER DEFAULT 1, - project_id INTEGER, + project_id INTEGER NOT NULL, FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE, UNIQUE (name, project_id) ) @@ -477,9 +477,9 @@ function version_33($pdo) id INTEGER PRIMARY KEY, date_creation INTEGER NOT NULL, event_name TEXT NOT NULL, - creator_id INTEGER, - project_id INTEGER, - task_id INTEGER, + creator_id INTEGE NOT NULL, + project_id INTEGER NOT NULL, + task_id INTEGER NOT NULL, data TEXT, FOREIGN KEY(creator_id) REFERENCES users(id) ON DELETE CASCADE, FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE, @@ -622,8 +622,8 @@ function version_23($pdo) $pdo->exec(" CREATE TABLE user_has_notifications ( - user_id INTEGER, - project_id INTEGER, + user_id INTEGER NOT NULL, + project_id INTEGER NOT NULL, FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE, FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE, UNIQUE(project_id, user_id) @@ -659,7 +659,7 @@ function version_18($pdo) $pdo->exec(" CREATE TABLE task_has_subtasks ( id INTEGER PRIMARY KEY, - title TEXT COLLATE NOCASE, + title TEXT COLLATE NOCASE NOT NULL, status INTEGER DEFAULT 0, time_estimated NUMERIC DEFAULT 0, time_spent NUMERIC DEFAULT 0, @@ -675,10 +675,10 @@ function version_17($pdo) $pdo->exec(" CREATE TABLE task_has_files ( id INTEGER PRIMARY KEY, - name TEXT COLLATE NOCASE, + name TEXT COLLATE NOCASE NOT NULL, path TEXT, is_image INTEGER DEFAULT 0, - task_id INTEGER, + task_id INTEGER NOT NULL, FOREIGN KEY(task_id) REFERENCES tasks(id) ON DELETE CASCADE )" ); @@ -689,8 +689,8 @@ function version_16($pdo) $pdo->exec(" CREATE TABLE project_has_categories ( id INTEGER PRIMARY KEY, - name TEXT COLLATE NOCASE, - project_id INT, + name TEXT COLLATE NOCASE NOT NULL, + project_id INTEGER NOT NULL, UNIQUE (project_id, name), FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE )" @@ -721,7 +721,7 @@ function version_12($pdo) $pdo->exec( 'CREATE TABLE remember_me ( id INTEGER PRIMARY KEY, - user_id INTEGER, + user_id INTEGER NOT NULL, ip TEXT, user_agent TEXT, token TEXT, @@ -736,7 +736,7 @@ function version_12($pdo) 'CREATE TABLE last_logins ( id INTEGER PRIMARY KEY, auth_type TEXT, - user_id INTEGER, + user_id INTEGER NOT NULL, ip TEXT, user_agent TEXT, date_creation INTEGER, @@ -779,9 +779,9 @@ function version_10($pdo) $pdo->exec( 'CREATE TABLE actions ( id INTEGER PRIMARY KEY, - project_id INTEGER, - event_name TEXT, - action_name TEXT, + project_id INTEGER NOT NULL, + event_name TEXT NOT NULL, + action_name TEXT NOT NULL, FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE )' ); @@ -789,9 +789,9 @@ function version_10($pdo) $pdo->exec( 'CREATE TABLE action_has_params ( id INTEGER PRIMARY KEY, - action_id INTEGER, - name TEXT, - value TEXT, + action_id INTEGER NOT NULL, + name TEXT NOT NULL, + value TEXT NOT NULL, FOREIGN KEY(action_id) REFERENCES actions(id) ON DELETE CASCADE )' ); @@ -822,8 +822,8 @@ function version_7($pdo) $pdo->exec(" CREATE TABLE project_has_users ( id INTEGER PRIMARY KEY, - project_id INTEGER, - user_id INTEGER, + project_id INTEGER NOT NULL, + user_id INTEGER NOT NULL, FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE, FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE, UNIQUE(project_id, user_id) @@ -869,7 +869,7 @@ function version_1($pdo) $pdo->exec(" CREATE TABLE users ( id INTEGER PRIMARY KEY, - username TEXT, + username TEXT NOT NULL, password TEXT, is_admin INTEGER DEFAULT 0, default_project_id INTEGER DEFAULT 0 @@ -879,7 +879,7 @@ function version_1($pdo) $pdo->exec(" CREATE TABLE projects ( id INTEGER PRIMARY KEY, - name TEXT NOCASE UNIQUE, + name TEXT NOCASE NOT NULL UNIQUE, is_active INTEGER DEFAULT 1 ) "); @@ -887,9 +887,9 @@ function version_1($pdo) $pdo->exec(" CREATE TABLE columns ( id INTEGER PRIMARY KEY, - title TEXT, + title TEXT NOT NULL, position INTEGER, - project_id INTEGER, + project_id INTEGER NOT NULL, FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE, UNIQUE (title, project_id) ) |