summaryrefslogtreecommitdiff
path: root/app/Schema
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2015-06-20 14:34:47 -0400
committerFrederic Guillot <fred@kanboard.net>2015-06-20 14:34:47 -0400
commitaa6fdd3544b64eeab3d577c58425e128c809a135 (patch)
tree388de73e11567e8927bc12694cc65a3c629f6a59 /app/Schema
parentd3f789764dcf90923a0d0f639dd2ee56b1177f84 (diff)
Improve automatic action duplication with unit tests and improve database schema
Diffstat (limited to 'app/Schema')
-rw-r--r--app/Schema/Mysql.php37
-rw-r--r--app/Schema/Postgres.php38
-rw-r--r--app/Schema/Sqlite.php52
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)
)