This commit is contained in:
Dennis Eichhorn 2018-12-24 16:08:15 +01:00
parent af1cd8da50
commit 65b9e806e1
5 changed files with 228 additions and 324 deletions

227
Admin/Install/db.json Normal file
View File

@ -0,0 +1,227 @@
{
"kanban_board": {
"name": "kanban_board",
"fields": {
"kanban_board_id": {
"name": "kanban_board_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"kanban_board_name": {
"name": "kanban_board_name",
"type": "VARCHAR(255)",
"null": false
},
"kanban_board_desc": {
"name": "kanban_board_desc",
"type": "TEXT",
"default": null,
"null": true
},
"kanban_board_status": {
"name": "kanban_board_status",
"type": "TINYINT",
"null": false
},
"kanban_board_order": {
"name": "kanban_board_order",
"type": "INT",
"null": false
},
"kanban_board_created_at": {
"name": "kanban_board_created_at",
"type": "DATETIME",
"null": false
},
"kanban_board_created_by": {
"name": "kanban_board_created_by",
"type": "INT",
"null": false,
"foreignTable": "account",
"foreignKey": "account_id"
}
}
},
"kanban_column": {
"name": "kanban_column",
"fields": {
"kanban_column_id": {
"name": "kanban_column_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"kanban_column_name": {
"name": "kanban_column_name",
"type": "VARCHAR(255)",
"null": false
},
"kanban_column_order": {
"name": "kanban_column_order",
"type": "INT",
"null": false
},
"kanban_column_board": {
"name": "kanban_column_board",
"type": "INT",
"null": false,
"foreignTable": "kanban_board",
"foreignKey": "kanban_board_id"
}
}
},
"kanban_card": {
"name": "kanban_card",
"fields": {
"kanban_card_id": {
"name": "kanban_card_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"kanban_card_name": {
"name": "kanban_card_name",
"type": "VARCHAR(255)",
"null": false
},
"kanban_card_description": {
"name": "kanban_card_description",
"type": "TEXT",
"default": null,
"null": true
},
"kanban_card_type": {
"name": "kanban_card_type",
"type": "TINYINT",
"null": false
},
"kanban_card_status": {
"name": "kanban_card_status",
"type": "TINYINT",
"null": false
},
"kanban_card_order": {
"name": "kanban_card_order",
"type": "INT",
"null": false
},
"kanban_card_ref": {
"name": "kanban_card_ref",
"type": "INT",
"null": false
},
"kanban_card_column": {
"name": "kanban_card_column",
"type": "INT",
"null": false,
"foreignTable": "kanban_column",
"foreignKey": "kanban_column_id"
},
"kanban_card_created_at": {
"name": "kanban_card_created_at",
"type": "DATETIME",
"null": false
},
"kanban_card_created_by": {
"name": "kanban_card_created_by",
"type": "INT",
"null": false,
"foreignTable": "account",
"foreignKey": "account_id"
}
}
},
"kanban_card_media": {
"name": "kanban_card_media",
"fields": {
"kanban_card_media_id": {
"name": "kanban_card_media_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"kanban_card_media_src": {
"name": "kanban_card_media_src",
"type": "INT",
"null": false,
"foreignTable": "kanban_card",
"foreignKey": "kanban_card_id"
},
"kanban_card_media_dst": {
"name": "kanban_card_media_dst",
"type": "INT",
"null": false,
"foreignTable": "media",
"foreignKey": "media_id"
}
}
},
"kanban_card_comment": {
"name": "kanban_card_comment",
"fields": {
"kanban_card_comment_id": {
"name": "kanban_card_comment_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"kanban_card_comment_description": {
"name": "kanban_card_comment_description",
"type": "TEXT",
"default": null,
"null": true
},
"kanban_card_comment_card": {
"name": "kanban_card_comment_card",
"type": "INT",
"null": false,
"foreignTable": "kanban_card",
"foreignKey": "kanban_card_id"
},
"kanban_card_comment_created_at": {
"name": "kanban_card_comment_created_at",
"type": "DATETIME",
"null": false
},
"kanban_card_comment_created_by": {
"name": "kanban_card_comment_created_by",
"type": "INT",
"null": false,
"foreignTable": "account",
"foreignKey": "account_id"
}
}
},
"kanban_card_comment_media": {
"name": "kanban_card_comment_media",
"fields": {
"kanban_card_comment_media_id": {
"name": "kanban_card_comment_media_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"kanban_card_comment_media_src": {
"name": "kanban_card_comment_media_src",
"type": "INT",
"null": false,
"foreignTable": "kanban_card_comment",
"foreignKey": "kanban_card_comment_id"
},
"kanban_card_comment_media_dst": {
"name": "kanban_card_comment_media_dst",
"type": "INT",
"null": false,
"foreignTable": "media",
"foreignKey": "media_id"
}
}
}
}

View File

@ -14,13 +14,10 @@ declare(strict_types=1);
namespace Modules\Kanban\Admin;
use phpOMS\DataStorage\Database\DatabasePool;
use phpOMS\DataStorage\Database\DatabaseType;
use phpOMS\Module\InfoManager;
use phpOMS\Module\InstallerAbstract;
/**
* Tasks install class.
* Installer class.
*
* @package Modules\Kanban\Admin
* @license OMS License 1.0
@ -29,182 +26,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->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'kanban_board` (
`kanban_board_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_board_name` varchar(255) NOT NULL,
`kanban_board_status` int(11) NOT NULL,
`kanban_board_order` int(11) NOT NULL,
`kanban_board_desc` text DEFAULT NULL,
`kanban_board_created_at` datetime DEFAULT NULL,
`kanban_board_created_by` int(11) DEFAULT NULL,
PRIMARY KEY (`kanban_board_id`),
KEY `kanban_board_created_by` (`kanban_board_created_by`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get()->con->prepare(
'ALTER TABLE `' . $dbPool->get()->prefix . 'kanban_board`
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'kanban_board_ibfk_1` FOREIGN KEY (`kanban_board_created_by`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`);'
)->execute();
$dbPool->get()->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'kanban_column` (
`kanban_column_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_column_name` varchar(255) NOT NULL,
`kanban_column_order` int(11) NOT NULL,
`kanban_column_board` int(11) NOT NULL,
PRIMARY KEY (`kanban_column_id`),
KEY `kanban_column_board` (`kanban_column_board`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get()->con->prepare(
'ALTER TABLE `' . $dbPool->get()->prefix . 'kanban_column`
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'kanban_column_ibfk_1` FOREIGN KEY (`kanban_column_board`) REFERENCES `' . $dbPool->get()->prefix . 'kanban_board` (`kanban_board_id`);'
)->execute();
$dbPool->get()->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'kanban_card` (
`kanban_card_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_card_name` varchar(255) NOT NULL,
`kanban_card_description` text NOT NULL,
`kanban_card_type` int(2) NOT NULL,
`kanban_card_status` int(2) NOT NULL,
`kanban_card_order` int(11) NOT NULL,
`kanban_card_ref` int(11) DEFAULT NULL,
`kanban_card_column` int(11) NOT NULL,
`kanban_card_created_at` datetime DEFAULT NULL,
`kanban_card_created_by` int(11) DEFAULT NULL,
PRIMARY KEY (`kanban_card_id`),
KEY `kanban_card_column` (`kanban_card_column`),
KEY `kanban_card_created_by` (`kanban_card_created_by`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get()->con->prepare(
'ALTER TABLE `' . $dbPool->get()->prefix . 'kanban_card`
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'kanban_card_ibfk_1` FOREIGN KEY (`kanban_card_column`) REFERENCES `' . $dbPool->get()->prefix . 'kanban_column` (`kanban_column_id`),
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'kanban_card_ibfk_2` FOREIGN KEY (`kanban_card_created_by`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`);'
)->execute();
$dbPool->get()->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'kanban_card_media` (
`kanban_card_media_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_card_media_dst` int(11) NOT NULL,
`kanban_card_media_src` int(11) NOT NULL,
PRIMARY KEY (`kanban_card_media_id`),
KEY `kanban_card_media_dst` (`kanban_card_media_dst`),
KEY `kanban_card_media_src` (`kanban_card_media_src`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get()->con->prepare(
'ALTER TABLE `' . $dbPool->get()->prefix . 'kanban_card_media`
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'kanban_card_media_ibfk_1` FOREIGN KEY (`kanban_card_media_dst`) REFERENCES `' . $dbPool->get()->prefix . 'media` (`media_id`),
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'kanban_card_media_ibfk_2` FOREIGN KEY (`kanban_card_media_src`) REFERENCES `' . $dbPool->get()->prefix . 'kanban_card` (`kanban_card_id`);'
)->execute();
// Task comments and these comments need to be merged which is bad but not every kanban card is a task and task info should be here as well.
$dbPool->get()->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'kanban_card_comment` (
`kanban_card_comment_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_card_comment_description` text NOT NULL,
`kanban_card_comment_card` int(11) NOT NULL,
`kanban_card_comment_created_at` datetime DEFAULT NULL,
`kanban_card_comment_created_by` int(11) DEFAULT NULL,
PRIMARY KEY (`kanban_card_comment_id`),
KEY `kanban_card_comment_card` (`kanban_card_comment_card`),
KEY `kanban_card_comment_created_by` (`kanban_card_comment_created_by`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get()->con->prepare(
'ALTER TABLE `' . $dbPool->get()->prefix . 'kanban_card_comment`
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'kanban_card_comment_ibfk_1` FOREIGN KEY (`kanban_card_comment_card`) REFERENCES `' . $dbPool->get()->prefix . 'kanban_card` (`kanban_card_id`),
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'kanban_card_comment_ibfk_2` FOREIGN KEY (`kanban_card_comment_created_by`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`);'
)->execute();
$dbPool->get()->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'kanban_card_comment_media` (
`kanban_card_comment_media_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_card_comment_media_dst` int(11) NOT NULL,
`kanban_card_comment_media_src` int(11) NOT NULL,
PRIMARY KEY (`kanban_card_comment_media_id`),
KEY `kanban_card_comment_media_dst` (`kanban_card_comment_media_dst`),
KEY `kanban_card_comment_media_src` (`kanban_card_comment_media_src`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get()->con->prepare(
'ALTER TABLE `' . $dbPool->get()->prefix . 'kanban_card_comment_media`
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'kanban_card_comment_media_ibfk_1` FOREIGN KEY (`kanban_card_comment_media_dst`) REFERENCES `' . $dbPool->get()->prefix . 'media` (`media_id`),
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'kanban_card_comment_media_ibfk_2` FOREIGN KEY (`kanban_card_comment_media_src`) REFERENCES `' . $dbPool->get()->prefix . 'kanban_card_comment` (`kanban_card_comment_id`);'
)->execute();
$dbPool->get()->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'kanban_activity` (
`kanban_activity_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_activity_type` varchar(50) NOT NULL,
`kanban_activity_subtype` int(2) NOT NULL,
`kanban_activity_board` int(11) NOT NULL,
`kanban_activity_old` varchar(255) NOT NULL,
`kanban_activity_new` varchar(255) NOT NULL,
`kanban_activity_by` int(11) DEFAULT NULL,
PRIMARY KEY (`kanban_activity_id`),
KEY `kanban_activity_by` (`kanban_activity_by`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get()->con->prepare(
'ALTER TABLE `' . $dbPool->get()->prefix . 'kanban_activity`
ADD CONSTRAINT `' . $dbPool->get()->prefix . 'kanban_activity_ibfk_1` FOREIGN KEY (`kanban_activity_by`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`);'
)->execute();
$dbPool->get()->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'kanban_label` (
`kanban_label_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_label_name` varchar(255) NOT NULL,
`kanban_label_color` int(11) NOT NULL,
`kanban_label_board` int(11) NOT NULL,
PRIMARY KEY (`kanban_label_id`),
KEY `kanban_label_board` (`kanban_label_board`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get()->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'kanban_label_relation` (
`kanban_label_relation_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_label_relation_card` int(11) NOT NULL,
`kanban_label_relation_label` int(11) NOT NULL,
PRIMARY KEY (`kanban_label_relation_id`),
KEY `kanban_label_relation_card` (`kanban_label_relation_card`),
KEY `kanban_label_relation_label` (`kanban_label_relation_label`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
$dbPool->get()->con->prepare(
'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'kanban_permission` (
`kanban_permission_id` int(11) NOT NULL AUTO_INCREMENT,
`kanban_permission_permission` int(11) NOT NULL,
`kanban_permission_board` int(11) NOT NULL,
`kanban_permission_account` int(11) NOT NULL,
PRIMARY KEY (`kanban_permission_id`),
KEY `kanban_permission_board` (`kanban_permission_board`),
KEY `kanban_permission_account` (`kanban_permission_account`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
)->execute();
break;
}
}
}

View File

@ -68,12 +68,6 @@ final class KanbanCardMapper extends DataMapperAbstract
'dst' => 'kanban_card_media_dst',
'src' => 'kanban_card_media_src',
],
'labels' => [
'mapper' => KanbanLabelMapper::class,
'table' => 'kanban_label_relation',
'dst' => 'kanban_label_relation_card',
'src' => 'kanban_label_relation_label',
],
'comments' => [
'mapper' => KanbanCardCommentMapper::class,
'table' => 'kanban_card_comment',

View File

@ -1,78 +0,0 @@
<?php
/**
* Orange Management
*
* PHP Version 7.2
*
* @package Modules\Kanban\Models
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://website.orange-management.de
*/
declare(strict_types=1);
namespace Modules\Kanban\Models;
/**
* Task class.
*
* @package Modules\Kanban\Models
* @license OMS License 1.0
* @link http://website.orange-management.de
* @since 1.0.0
*/
class KanbanLabel implements \JsonSerializable
{
private $id = 0;
private $name = '';
private $board = 0;
private $color = 0;
public function __construct()
{
}
public function getId() : int
{
return $this->id;
}
public function getName() : string
{
return $this->name;
}
public function setName(string $name) : void
{
$this->name = $name;
}
public function setColor(int $color) : void
{
$this->color = $color;
}
public function getColor() : int
{
return $this->color;
}
public function getBoard() : int
{
return $this->board;
}
public function setBoard(int $board) : void
{
$this->board = $board;
}
public function jsonSerialize() : array
{
return [];
}
}

View File

@ -1,58 +0,0 @@
<?php
/**
* Orange Management
*
* PHP Version 7.2
*
* @package Modules\Kanban\Models
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://website.orange-management.de
*/
declare(strict_types=1);
namespace Modules\Kanban\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract;
/**
* Mapper class.
*
* @package Modules\Kanban\Models
* @license OMS License 1.0
* @link http://website.orange-management.de
* @since 1.0.0
*/
final class KanbanLabelMapper extends DataMapperAbstract
{
/**
* Columns.
*
* @var array<string, array<string, bool|string>>
* @since 1.0.0
*/
protected static $columns = [
'kanban_label_id' => ['name' => 'kanban_label_id', 'type' => 'int', 'internal' => 'id'],
'kanban_label_name' => ['name' => 'kanban_label_name', 'type' => 'string', 'internal' => 'name'],
'kanban_label_color' => ['name' => 'kanban_label_color', 'type' => 'int', 'internal' => 'color'],
'kanban_label_board' => ['name' => 'kanban_label_board', 'type' => 'int', 'internal' => 'board'],
];
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
protected static $table = 'kanban_label';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
protected static $primaryField = 'kanban_label_id';
}