diff --git a/Admin/Install/db.json b/Admin/Install/db.json new file mode 100644 index 0000000..641f766 --- /dev/null +++ b/Admin/Install/db.json @@ -0,0 +1,239 @@ +{ + "task": { + "name": "task", + "fields": { + "task_id": { + "name": "task_id", + "type": "INT", + "null": false, + "primary": true, + "autoincrement": true + }, + "task_title": { + "name": "task_title", + "type": "VARCHAR(255)", + "null": false + }, + "task_desc": { + "name": "task_desc", + "type": "TEXT", + "null": false + }, + "task_desc_raw": { + "name": "task_desc_raw", + "type": "TEXT", + "null": false + }, + "task_type": { + "name": "task_type", + "type": "TINYINT", + "null": false + }, + "task_status": { + "name": "task_status", + "type": "TINYINT", + "null": false + }, + "task_closable": { + "name": "task_closable", + "type": "TINYINT", + "null": false + }, + "task_priority": { + "name": "task_priority", + "type": "TINYINT", + "null": false + }, + "task_due": { + "name": "task_due", + "type": "DATETIME", + "default": null, + "null": true + }, + "task_done": { + "name": "task_done", + "type": "DATETIME", + "default": null, + "null": true + }, + "task_start": { + "name": "task_start", + "type": "DATETIME", + "default": null, + "null": true + }, + "task_schedule": { + "name": "task_schedule", + "type": "INT", + "default": null, + "null": true, + "foreignTable": "schedule", + "foreignKey": "schedule_id" + }, + "task_created_by": { + "name": "task_created_by", + "type": "INT", + "null": false, + "foreignTable": "account", + "foreignKey": "account_id" + }, + "task_created_at": { + "name": "task_created_at", + "type": "DATETIME", + "null": false + } + } + }, + "task_media": { + "name": "task_media", + "fields": { + "task_media_id": { + "name": "task_media_id", + "type": "INT", + "null": false, + "primary": true, + "autoincrement": true + }, + "task_media_src": { + "name": "task_media_src", + "type": "INT", + "null": false, + "foreignTable": "task", + "foreignKey": "task_id" + }, + "task_media_dst": { + "name": "task_media_dst", + "type": "INT", + "null": false, + "foreignTable": "media", + "foreignKey": "media_id" + } + } + }, + "task_account": { + "name": "task_account", + "fields": { + "task_account_id": { + "name": "task_account_id", + "type": "INT", + "null": false, + "primary": true, + "autoincrement": true + }, + "task_account_task": { + "name": "task_account_task", + "type": "INT", + "null": false, + "foreignTable": "task", + "foreignKey": "task_id" + }, + "task_account_account": { + "name": "task_account_account", + "type": "INT", + "null": false, + "foreignTable": "account", + "foreignKey": "account_id" + }, + "task_account_seen": { + "name": "task_account_seen", + "type": "TINYINT", + "null": false + }, + "task_account_type": { + "name": "task_account_type", + "type": "TINYINT", + "null": false + } + } + }, + "task_element": { + "name": "task_element", + "fields": { + "task_element_id": { + "name": "task_element_id", + "type": "INT", + "null": false, + "primary": true, + "autoincrement": true + }, + "task_element_desc": { + "name": "task_element_desc", + "type": "TEXT", + "null": false + }, + "task_element_desc_raw": { + "name": "task_element_desc_raw", + "type": "TEXT", + "null": false + }, + "task_element_task": { + "name": "task_element_task", + "type": "INT", + "null": false, + "foreignTable": "task", + "foreignKey": "task_id" + }, + "task_element_created_by": { + "name": "task_element_created_by", + "type": "INT", + "null": false, + "foreignTable": "account", + "foreignKey": "account_id" + }, + "task_element_status": { + "name": "task_element_status", + "type": "TINYINT", + "null": false + }, + "task_element_priority": { + "name": "task_element_priority", + "type": "TINYINT", + "null": false + }, + "task_element_due": { + "name": "task_element_due", + "type": "DATETIME", + "null": false + }, + "task_element_forwarded": { + "name": "task_element_forwarded", + "type": "INT", + "default": null, + "null": true, + "foreignTable": "account", + "foreignKey": "account_id" + }, + "task_element_created_at": { + "name": "task_element_created_at", + "type": "DATETIME", + "null": false + } + } + }, + "task_element_media": { + "name": "task_element_media", + "fields": { + "task_element_media_id": { + "name": "task_element_media_id", + "type": "INT", + "null": false, + "primary": true, + "autoincrement": true + }, + "task_element_media_src": { + "name": "task_element_media_src", + "type": "INT", + "null": false, + "foreignTable": "task_element", + "foreignKey": "task_element_id" + }, + "task_element_media_dst": { + "name": "task_element_media_dst", + "type": "INT", + "null": false, + "foreignTable": "media", + "foreignKey": "media_id" + } + } + } +} \ No newline at end of file diff --git a/Admin/Installer.php b/Admin/Installer.php index 19ad86d..2182d73 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -29,128 +29,4 @@ use phpOMS\Module\InstallerAbstract; */ class Installer extends InstallerAbstract { - - /** - * {@inheritdoc} - */ - public static function install(DatabasePool $dbPool, InfoManager $info) : void - { - parent::install($dbPool, $info); - - switch ($dbPool->get()->getType()) { - case DatabaseType::MYSQL: - $dbPool->get()->con->beginTransaction(); - - $dbPool->get()->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'task` ( - `task_id` int(11) NOT NULL AUTO_INCREMENT, - `task_title` varchar(255) DEFAULT NULL, - `task_desc` text NOT NULL, - `task_desc_raw` text NOT NULL, - `task_type` tinyint(1) NOT NULL, - `task_status` tinyint(1) NOT NULL, - `task_closable` tinyint(1) NOT NULL, - `task_priority` tinyint(1) NOT NULL, - `task_due` datetime NOT NULL, - `task_done` datetime DEFAULT NULL, - `task_start` datetime DEFAULT NULL, - `task_schedule` int(11) DEFAULT NULL, - `task_created_by` int(11) NOT NULL, - `task_created_at` datetime NOT NULL, - PRIMARY KEY (`task_id`), - KEY `task_schedule` (`task_schedule`), - KEY `task_created_by` (`task_created_by`) - )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' - )->execute(); - - $dbPool->get()->con->prepare( - 'ALTER TABLE `' . $dbPool->get()->prefix . 'task` - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'task_ibfk_1` FOREIGN KEY (`task_schedule`) REFERENCES `' . $dbPool->get()->prefix . 'schedule` (`schedule_id`), - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'task_ibfk_2` FOREIGN KEY (`task_created_by`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`);' - )->execute(); - - $dbPool->get()->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'task_media` ( - `task_media_id` int(11) NOT NULL AUTO_INCREMENT, - `task_media_src` int(11) NULL, - `task_media_dst` int(11) NULL, - PRIMARY KEY (`task_media_id`), - KEY `task_media_src` (`task_media_src`), - KEY `task_media_dst` (`task_media_dst`) - )ENGINE=InnoDB DEFAULT CHARSET=utf8;' - )->execute(); - - $dbPool->get()->con->prepare( - 'ALTER TABLE `' . $dbPool->get()->prefix . 'task_media` - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'task_media_ibfk_1` FOREIGN KEY (`task_media_src`) REFERENCES `' . $dbPool->get()->prefix . 'task` (`task_id`), - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'task_media_ibfk_2` FOREIGN KEY (`task_media_dst`) REFERENCES `' . $dbPool->get()->prefix . 'media` (`media_id`);' - )->execute(); - - // type = to, cc, bcc - $dbPool->get()->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'task_account` ( - `task_account_id` int(11) NOT NULL AUTO_INCREMENT, - `task_account_task` int(11) NOT NULL, - `task_account_seen` tinyint(1) NOT NULL, - `task_account_account` int(11) NOT NULL, - `task_account_type` tinyint(1) NOT NULL, - PRIMARY KEY (`task_account_id`), - KEY `task_account_task` (`task_account_task`), - KEY `task_account_account` (`task_account_account`) - )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' - )->execute(); - - $dbPool->get()->con->prepare( - 'ALTER TABLE `' . $dbPool->get()->prefix . 'task_account` - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'task_account_ibfk_1` FOREIGN KEY (`task_account_task`) REFERENCES `' . $dbPool->get()->prefix . 'task` (`task_id`), - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'task_account_ibfk_2` FOREIGN KEY (`task_account_account`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`);' - )->execute(); - - $dbPool->get()->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'task_element` ( - `task_element_id` int(11) NOT NULL AUTO_INCREMENT, - `task_element_desc` text NOT NULL, - `task_element_desc_raw` text NOT NULL, - `task_element_task` int(11) NOT NULL, - `task_element_created_by` int(11) NOT NULL, - `task_element_status` tinyint(1) NOT NULL, - `task_element_priority` tinyint(1) NOT NULL, - `task_element_due` datetime NOT NULL, - `task_element_forwarded` int(11) DEFAULT NULL, - `task_element_created_at` datetime NOT NULL, - PRIMARY KEY (`task_element_id`), - KEY `task_element_task` (`task_element_task`), - KEY `task_element_created_by` (`task_element_created_by`), - KEY `task_element_forwarded` (`task_element_forwarded`) - )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' - )->execute(); - - $dbPool->get()->con->prepare( - 'ALTER TABLE `' . $dbPool->get()->prefix . 'task_element` - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'task_element_ibfk_1` FOREIGN KEY (`task_element_task`) REFERENCES `' . $dbPool->get()->prefix . 'task` (`task_id`), - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'task_element_ibfk_2` FOREIGN KEY (`task_element_created_by`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`), - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'task_element_ibfk_3` FOREIGN KEY (`task_element_forwarded`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`);' - )->execute(); - - $dbPool->get()->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'task_element_media` ( - `task_element_media_id` int(11) NOT NULL AUTO_INCREMENT, - `task_element_media_src` int(11) NULL, - `task_element_media_dst` int(11) NULL, - PRIMARY KEY (`task_element_media_id`), - KEY `task_element_media_src` (`task_element_media_src`), - KEY `task_element_media_dst` (`task_element_media_dst`) - )ENGINE=InnoDB DEFAULT CHARSET=utf8;' - )->execute(); - - $dbPool->get()->con->prepare( - 'ALTER TABLE `' . $dbPool->get()->prefix . 'task_element_media` - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'task_element_media_ibfk_1` FOREIGN KEY (`task_element_media_src`) REFERENCES `' . $dbPool->get()->prefix . 'task_element` (`task_element_id`), - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'task_element_media_ibfk_2` FOREIGN KEY (`task_element_media_dst`) REFERENCES `' . $dbPool->get()->prefix . 'media` (`media_id`);' - )->execute(); - - $dbPool->get()->con->commit(); - break; - } - } }