new datamapper mostly implemented

This commit is contained in:
Dennis Eichhorn 2021-12-11 11:54:17 +01:00
parent b345f1131f
commit 6b42f1394f
11 changed files with 70 additions and 53 deletions

View File

@ -354,7 +354,7 @@ final class ApiController extends Controller
*/
public function apiKanbanBoardUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
$old = clone KanbanBoardMapper::get((int) $request->getData('id'));
$old = clone KanbanBoardMapper::get()->where('id', (int) $request->getData('id'))->execute();
$new = $this->updateBoardFromRequest($request);
$this->updateModel($request->header->account, $old, $new, KanbanBoardMapper::class, 'board', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Board', 'Board successfully updated', $new);
@ -372,7 +372,7 @@ final class ApiController extends Controller
private function updateBoardFromRequest(RequestAbstract $request) : KanbanBoard
{
/** @var KanbanBoard $board */
$board = KanbanBoardMapper::get((int) $request->getData('id'));
$board = KanbanBoardMapper::get()->where('id', (int) $request->getData('id'))->execute();
$board->name = $request->getData('title') ?? $board->name;
$board->description = Markdown::parse((string) ($request->getData('plain') ?? $board->descriptionRaw));
$board->descriptionRaw = (string) ($request->getData('plain') ?? $board->descriptionRaw);

View File

@ -18,8 +18,10 @@ use Modules\Kanban\Models\KanbanBoardMapper;
use Modules\Kanban\Models\KanbanCardMapper;
use Modules\Kanban\Models\PermissionState;
use phpOMS\Account\PermissionType;
use phpOMS\Algorithm\Sort\SortOrder;
use phpOMS\Asset\AssetType;
use phpOMS\Contract\RenderableInterface;
use phpOMS\DataStorage\Database\Query\OrderType;
use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
@ -74,10 +76,14 @@ final class BackendController extends Controller
$view->setTemplate('/Modules/Kanban/Theme/Backend/kanban-dashboard');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005801001, $request, $response));
$list = KanbanBoardMapper
::with('columns', models: null)
::with('language', $response->getLanguage())
::getNewest(20, depth: 3);
$list = KanbanBoardMapper::getAll()
->with('tags')
->with('tags/title')
->where('tags/title/language', $request->getLanguage())
->sort('createdAt', OrderType::DESC)
->limit(20)
->execute();
$view->setData('boards', $list);
return $view;
@ -99,8 +105,15 @@ final class BackendController extends Controller
{
$view = new View($this->app->l11nManager, $request, $response);
$board = KanbanBoardMapper::with('language', $response->getLanguage())
::get((int) $request->getData('id'), depth: 5);
$board = KanbanBoardMapper::get()
->with('columns')
->with('columns/cards')
->with('columns/cards/tags')
->with('columns/cards/tags/title')
->where('id', (int) $request->getData('id'))
->where('columns/cards/tags/title/language', $request->getLanguage())
->execute();
$accountId = $request->header->account;
if ($board->createdBy->getId() !== $accountId
@ -138,9 +151,13 @@ final class BackendController extends Controller
$view->setTemplate('/Modules/Kanban/Theme/Backend/kanban-archive');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005801001, $request, $response));
$list = KanbanBoardMapper::with('columns', models: null)
::with('language', $response->getLanguage())
::getNewest(20, depth: 3);
$list = KanbanBoardMapper::getAll()
->with('tags')
->with('tags/title')
->where('tags/title/language', $request->getLanguage())
->sort('createdAt', OrderType::DESC)
->limit(25)
->execute();
$view->setData('boards', $list);
@ -195,7 +212,7 @@ final class BackendController extends Controller
{
$view = new View($this->app->l11nManager, $request, $response);
$card = KanbanCardMapper::get((int) $request->getData('id'));
$card = KanbanCardMapper::get()->where('id', (int) $request->getData('id'))->execute();
$accountId = $request->header->account;
if ($card->createdBy->getId() !== $accountId

View File

@ -16,7 +16,7 @@ namespace Modules\Kanban\Models;
use Modules\Admin\Models\AccountMapper;
use Modules\Tag\Models\TagMapper;
use phpOMS\DataStorage\Database\DataMapperAbstract;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/**
* Mapper class.
@ -26,7 +26,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
* @link https://orange-management.org
* @since 1.0.0
*/
final class KanbanBoardMapper extends DataMapperAbstract
final class KanbanBoardMapper extends DataMapperFactory
{
/**
* Columns.
@ -34,7 +34,7 @@ final class KanbanBoardMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
protected static array $columns = [
public const COLUMNS = [
'kanban_board_id' => ['name' => 'kanban_board_id', 'type' => 'int', 'internal' => 'id'],
'kanban_board_name' => ['name' => 'kanban_board_name', 'type' => 'string', 'internal' => 'name'],
'kanban_board_desc' => ['name' => 'kanban_board_desc', 'type' => 'string', 'internal' => 'description'],
@ -52,7 +52,7 @@ final class KanbanBoardMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
protected static array $hasMany = [
public const HAS_MANY = [
'columns' => [
'mapper' => KanbanColumnMapper::class,
'table' => 'kanban_column',
@ -73,7 +73,7 @@ final class KanbanBoardMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, external:string}>
* @since 1.0.0
*/
protected static array $belongsTo = [
public const BELONGS_TO = [
'createdBy' => [
'mapper' => AccountMapper::class,
'external' => 'kanban_board_created_by',
@ -86,7 +86,7 @@ final class KanbanBoardMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $table = 'kanban_board';
public const TABLE = 'kanban_board';
/**
* Created at.
@ -94,7 +94,7 @@ final class KanbanBoardMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $createdAt = 'kanban_board_created_at';
public const CREATED_AT = 'kanban_board_created_at';
/**
* Primary field name.
@ -102,5 +102,5 @@ final class KanbanBoardMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $primaryField = 'kanban_board_id';
public const PRIMARYFIELD ='kanban_board_id';
}

View File

@ -16,7 +16,7 @@ namespace Modules\Kanban\Models;
use Modules\Admin\Models\AccountMapper;
use Modules\Media\Models\MediaMapper;
use phpOMS\DataStorage\Database\DataMapperAbstract;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/**
* Mapper class.
@ -26,7 +26,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
* @link https://orange-management.org
* @since 1.0.0
*/
final class KanbanCardCommentMapper extends DataMapperAbstract
final class KanbanCardCommentMapper extends DataMapperFactory
{
/**
* Columns.
@ -34,7 +34,7 @@ final class KanbanCardCommentMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
protected static array $columns = [
public const COLUMNS = [
'kanban_card_comment_id' => ['name' => 'kanban_card_comment_id', 'type' => 'int', 'internal' => 'id'],
'kanban_card_comment_description' => ['name' => 'kanban_card_comment_description', 'type' => 'string', 'internal' => 'description'],
'kanban_card_comment_descriptionraw' => ['name' => 'kanban_card_comment_descriptionraw', 'type' => 'string', 'internal' => 'descriptionRaw'],
@ -49,7 +49,7 @@ final class KanbanCardCommentMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
protected static array $hasMany = [
public const HAS_MANY = [
'media' => [
'mapper' => MediaMapper::class,
'table' => 'kanban_card_comment_media',
@ -64,7 +64,7 @@ final class KanbanCardCommentMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, external:string}>
* @since 1.0.0
*/
protected static array $belongsTo = [
public const BELONGS_TO = [
'createdBy' => [
'mapper' => AccountMapper::class,
'external' => 'kanban_card_comment_created_by',
@ -77,7 +77,7 @@ final class KanbanCardCommentMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $table = 'kanban_card_comment';
public const TABLE = 'kanban_card_comment';
/**
* Created at.
@ -85,7 +85,7 @@ final class KanbanCardCommentMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $createdAt = 'kanban_card_comment_created_at';
public const CREATED_AT = 'kanban_card_comment_created_at';
/**
* Primary field name.
@ -93,5 +93,5 @@ final class KanbanCardCommentMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $primaryField = 'kanban_card_comment_id';
public const PRIMARYFIELD ='kanban_card_comment_id';
}

View File

@ -17,7 +17,7 @@ namespace Modules\Kanban\Models;
use Modules\Admin\Models\AccountMapper;
use Modules\Media\Models\MediaMapper;
use Modules\Tag\Models\TagMapper;
use phpOMS\DataStorage\Database\DataMapperAbstract;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/**
* Mapper class.
@ -27,7 +27,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
* @link https://orange-management.org
* @since 1.0.0
*/
final class KanbanCardMapper extends DataMapperAbstract
final class KanbanCardMapper extends DataMapperFactory
{
/**
* Columns.
@ -35,7 +35,7 @@ final class KanbanCardMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
protected static array $columns = [
public const COLUMNS = [
'kanban_card_id' => ['name' => 'kanban_card_id', 'type' => 'int', 'internal' => 'id'],
'kanban_card_name' => ['name' => 'kanban_card_name', 'type' => 'string', 'internal' => 'name'],
'kanban_card_description' => ['name' => 'kanban_card_description', 'type' => 'string', 'internal' => 'description'],
@ -57,7 +57,7 @@ final class KanbanCardMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, external:string}>
* @since 1.0.0
*/
protected static array $belongsTo = [
public const BELONGS_TO = [
'createdBy' => [
'mapper' => AccountMapper::class,
'external' => 'kanban_card_created_by',
@ -70,7 +70,7 @@ final class KanbanCardMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
protected static array $hasMany = [
public const HAS_MANY = [
'media' => [
'mapper' => MediaMapper::class,
'table' => 'kanban_card_media',
@ -97,7 +97,7 @@ final class KanbanCardMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $table = 'kanban_card';
public const TABLE = 'kanban_card';
/**
* Created at.
@ -105,7 +105,7 @@ final class KanbanCardMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $createdAt = 'kanban_card_created_at';
public const CREATED_AT = 'kanban_card_created_at';
/**
* Primary field name.
@ -113,5 +113,5 @@ final class KanbanCardMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $primaryField = 'kanban_card_id';
public const PRIMARYFIELD ='kanban_card_id';
}

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Kanban\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/**
* Mapper class.
@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
* @link https://orange-management.org
* @since 1.0.0
*/
final class KanbanColumnMapper extends DataMapperAbstract
final class KanbanColumnMapper extends DataMapperFactory
{
/**
* Columns.
@ -32,7 +32,7 @@ final class KanbanColumnMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
protected static array $columns = [
public const COLUMNS = [
'kanban_column_id' => ['name' => 'kanban_column_id', 'type' => 'int', 'internal' => 'id'],
'kanban_column_name' => ['name' => 'kanban_column_name', 'type' => 'string', 'internal' => 'name'],
'kanban_column_order' => ['name' => 'kanban_column_order', 'type' => 'int', 'internal' => 'order'],
@ -45,7 +45,7 @@ final class KanbanColumnMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
protected static array $hasMany = [
public const HAS_MANY = [
'cards' => [
'mapper' => KanbanCardMapper::class,
'table' => 'kanban_card',
@ -60,7 +60,7 @@ final class KanbanColumnMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $table = 'kanban_column';
public const TABLE = 'kanban_column';
/**
* Primary field name.
@ -68,5 +68,5 @@ final class KanbanColumnMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $primaryField = 'kanban_column_id';
public const PRIMARYFIELD ='kanban_column_id';
}

View File

@ -12,7 +12,7 @@ require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/Autoloader.php';
use phpOMS\DataStorage\Database\DatabasePool;
use phpOMS\DataStorage\Database\DataMapperAbstract;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\DataStorage\Session\HttpSession;
$CONFIG = [
@ -329,7 +329,7 @@ $GLOBALS['dbpool']->create('delete', $CONFIG['db']['core']['masters']['delete'])
$GLOBALS['dbpool']->create('insert', $CONFIG['db']['core']['masters']['insert']);
$GLOBALS['dbpool']->create('schema', $CONFIG['db']['core']['masters']['schema']);
DataMapperAbstract::setConnection($GLOBALS['dbpool']->get());
DataMapperFactory::db($GLOBALS['dbpool']->get());
$GLOBALS['frameworkpath'] = '/phpOMS/';

View File

@ -35,11 +35,11 @@ final class KanbanBoardMapperTest extends \PHPUnit\Framework\TestCase
$board->description = 'This is some description';
$board->createdBy = new NullAccount(1);
$id = KanbanBoardMapper::create($board);
$id = KanbanBoardMapper::create()->execute($board);
self::assertGreaterThan(0, $board->getId());
self::assertEquals($id, $board->getId());
$boardR = KanbanBoardMapper::get($board->getId());
$boardR = KanbanBoardMapper::get()->where('id', $board->getId())->execute();
self::assertEquals($board->name, $boardR->name);
self::assertEquals($board->getStatus(), $boardR->getStatus());
self::assertEquals($board->description, $boardR->description);

View File

@ -36,11 +36,11 @@ final class KanbanCardCommentMapperTest extends \PHPUnit\Framework\TestCase
$comment->card = 1;
$comment->createdBy = new NullAccount(1);
$id = KanbanCardCommentMapper::create($comment);
$id = KanbanCardCommentMapper::create()->execute($comment);
self::assertGreaterThan(0, $comment->getId());
self::assertEquals($id, $comment->getId());
$commentR = KanbanCardCommentMapper::get($comment->getId());
$commentR = KanbanCardCommentMapper::get()->where('id', $comment->getId())->execute();
self::assertEquals($comment->description, $commentR->description);
self::assertEquals($comment->card, $commentR->card);
self::assertEquals($comment->createdBy->getId(), $commentR->createdBy->getId());

View File

@ -45,11 +45,11 @@ final class KanbanCardMapperTest extends \PHPUnit\Framework\TestCase
$card->addTag(new Tag());
$card->addTag(new Tag());
$id = KanbanCardMapper::create($card);
$id = KanbanCardMapper::create()->execute($card);
self::assertGreaterThan(0, $card->getId());
self::assertEquals($id, $card->getId());
$cardR = KanbanCardMapper::get($card->getId());
$cardR = KanbanCardMapper::get()->where('id', $card->getId())->execute();
self::assertEquals($card->name, $cardR->name);
self::assertEquals($card->description, $cardR->description);
self::assertEquals($card->column, $cardR->column);
@ -78,7 +78,7 @@ final class KanbanCardMapperTest extends \PHPUnit\Framework\TestCase
$card->addTag(new Tag());
$card->addTag(new Tag());
$id = KanbanCardMapper::create($card);
$id = KanbanCardMapper::create()->execute($card);
self::assertGreaterThan(0, $card->getId());
self::assertEquals($id, $card->getId());
}

View File

@ -35,11 +35,11 @@ final class KanbanColumnMapperTest extends \PHPUnit\Framework\TestCase
$column->board = 1;
$column->order = 1;
$id = KanbanColumnMapper::create($column);
$id = KanbanColumnMapper::create()->execute($column);
self::assertGreaterThan(0, $column->getId());
self::assertEquals($id, $column->getId());
$columnR = KanbanColumnMapper::get($column->getId());
$columnR = KanbanColumnMapper::get()->where('id', $column->getId())->execute();
self::assertEquals($column->name, $columnR->name);
self::assertEquals($column->board, $columnR->board);
self::assertEquals($column->order, $columnR->order);