new datamapper mostly implemented

This commit is contained in:
Dennis Eichhorn 2021-12-11 11:54:16 +01:00
parent 00abd33bb6
commit c08deecc87
8 changed files with 36 additions and 43 deletions

View File

@ -325,18 +325,15 @@ final class BackendController extends Controller
if ($request->getData('ptype') === 'p') { if ($request->getData('ptype') === 'p') {
$view->setData('costcenter', $view->setData('costcenter',
CostCenterMapper::with('language', $response->getLanguage()) CostCenterMapper::getAll()->where('id', (int) ($request->getData('id') ?? 0), '<')->limit(25)->execute()
::getBeforePivot((int) ($request->getData('id') ?? 0), null, 25)
); );
} elseif ($request->getData('ptype') === 'n') { } elseif ($request->getData('ptype') === 'n') {
$view->setData('costcenter', $view->setData('costcenter',
CostCenterMapper::with('language', $response->getLanguage()) CostCenterMapper::getAll()->where('id', (int) ($request->getData('id') ?? 0), '>')->limit(25)->execute()
::getAfterPivot((int) ($request->getData('id') ?? 0), null, 25)
); );
} else { } else {
$view->setData('costcenter', $view->setData('costcenter',
CostCenterMapper::with('language', $response->getLanguage()) CostCenterMapper::getAll()->where('id', 0, '>')->limit(25)->execute()
::getAfterPivot(0, null, 25)
); );
} }
@ -363,18 +360,15 @@ final class BackendController extends Controller
if ($request->getData('ptype') === 'p') { if ($request->getData('ptype') === 'p') {
$view->setData('costobject', $view->setData('costobject',
CostObjectMapper::with('language', $response->getLanguage()) CostObjectMapper::getAll()->where('id', (int) ($request->getData('id') ?? 0), '<')->limit(25)->execute()
::getBeforePivot((int) ($request->getData('id') ?? 0), null, 25)
); );
} elseif ($request->getData('ptype') === 'n') { } elseif ($request->getData('ptype') === 'n') {
$view->setData('costobject', $view->setData('costobject',
CostObjectMapper::with('language', $response->getLanguage()) CostObjectMapper::getAll()->where('id', (int) ($request->getData('id') ?? 0), '>')->limit(25)->execute()
::getAfterPivot((int) ($request->getData('id') ?? 0), null, 25)
); );
} else { } else {
$view->setData('costobject', $view->setData('costobject',
CostObjectMapper::with('language', $response->getLanguage()) CostObjectMapper::getAll()->where('id', 0, '>')->limit(25)->execute()
::getAfterPivot(0, null, 25)
); );
} }

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Accounting\Models; namespace Modules\Accounting\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* CostCenter mapper class. * CostCenter mapper class.
@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */
final class CostCenterL11nMapper extends DataMapperAbstract final class CostCenterL11nMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -32,7 +32,7 @@ final class CostCenterL11nMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}> * @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $columns = [ public const COLUMNS = [
'accounting_costcenter_l11n_id' => ['name' => 'accounting_costcenter_l11n_id', 'type' => 'int', 'internal' => 'id'], 'accounting_costcenter_l11n_id' => ['name' => 'accounting_costcenter_l11n_id', 'type' => 'int', 'internal' => 'id'],
'accounting_costcenter_l11n_name' => ['name' => 'accounting_costcenter_l11n_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true], 'accounting_costcenter_l11n_name' => ['name' => 'accounting_costcenter_l11n_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true],
'accounting_costcenter_l11n_description' => ['name' => 'accounting_costcenter_l11n_description', 'type' => 'string', 'internal' => 'description', 'autocomplete' => true], 'accounting_costcenter_l11n_description' => ['name' => 'accounting_costcenter_l11n_description', 'type' => 'string', 'internal' => 'description', 'autocomplete' => true],
@ -46,7 +46,7 @@ final class CostCenterL11nMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'accounting_costcenter_l11n'; public const TABLE = 'accounting_costcenter_l11n';
/** /**
* Primary field name. * Primary field name.
@ -54,5 +54,5 @@ final class CostCenterL11nMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'accounting_costcenter_l11n_id'; public const PRIMARYFIELD ='accounting_costcenter_l11n_id';
} }

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Accounting\Models; namespace Modules\Accounting\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* Accounting mapper class. * Accounting mapper class.
@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */
final class CostCenterMapper extends DataMapperAbstract final class CostCenterMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -32,7 +32,7 @@ final class CostCenterMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}> * @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $columns = [ public const COLUMNS = [
'accounting_costcenter_id' => ['name' => 'accounting_costcenter_id', 'type' => 'int', 'internal' => 'id'], 'accounting_costcenter_id' => ['name' => 'accounting_costcenter_id', 'type' => 'int', 'internal' => 'id'],
'accounting_costcenter_code' => ['name' => 'accounting_costcenter_code', 'type' => 'string', 'internal' => 'code'], 'accounting_costcenter_code' => ['name' => 'accounting_costcenter_code', 'type' => 'string', 'internal' => 'code'],
]; ];
@ -43,12 +43,11 @@ final class CostCenterMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}> * @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $hasMany = [ public const HAS_MANY = [
'l11n' => [ 'l11n' => [
'mapper' => CostCenterL11nMapper::class, 'mapper' => CostCenterL11nMapper::class,
'table' => 'accounting_costcenter_l11n', 'table' => 'accounting_costcenter_l11n',
'self' => 'accounting_costcenter_l11n_costcenter', 'self' => 'accounting_costcenter_l11n_costcenter',
'conditional' => true,
'external' => null, 'external' => null,
], ],
]; ];
@ -59,7 +58,7 @@ final class CostCenterMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $model = CostCenter::class; public const MODEL = CostCenter::class;
/** /**
* Primary table. * Primary table.
@ -67,7 +66,7 @@ final class CostCenterMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'accounting_costcenter'; public const TABLE = 'accounting_costcenter';
/** /**
* Primary field name. * Primary field name.
@ -75,5 +74,5 @@ final class CostCenterMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'accounting_costcenter_id'; public const PRIMARYFIELD ='accounting_costcenter_id';
} }

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Accounting\Models; namespace Modules\Accounting\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* CostObject mapper class. * CostObject mapper class.
@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */
final class CostObjectL11nMapper extends DataMapperAbstract final class CostObjectL11nMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -32,7 +32,7 @@ final class CostObjectL11nMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}> * @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $columns = [ public const COLUMNS = [
'accounting_costobject_l11n_id' => ['name' => 'accounting_costobject_l11n_id', 'type' => 'int', 'internal' => 'id'], 'accounting_costobject_l11n_id' => ['name' => 'accounting_costobject_l11n_id', 'type' => 'int', 'internal' => 'id'],
'accounting_costobject_l11n_name' => ['name' => 'accounting_costobject_l11n_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true], 'accounting_costobject_l11n_name' => ['name' => 'accounting_costobject_l11n_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true],
'accounting_costobject_l11n_description' => ['name' => 'accounting_costobject_l11n_description', 'type' => 'string', 'internal' => 'description', 'autocomplete' => true], 'accounting_costobject_l11n_description' => ['name' => 'accounting_costobject_l11n_description', 'type' => 'string', 'internal' => 'description', 'autocomplete' => true],
@ -46,7 +46,7 @@ final class CostObjectL11nMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'accounting_costobject_l11n'; public const TABLE = 'accounting_costobject_l11n';
/** /**
* Primary field name. * Primary field name.
@ -54,5 +54,5 @@ final class CostObjectL11nMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'accounting_costobject_l11n_id'; public const PRIMARYFIELD ='accounting_costobject_l11n_id';
} }

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Accounting\Models; namespace Modules\Accounting\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* Accounting mapper class. * Accounting mapper class.
@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */
final class CostObjectMapper extends DataMapperAbstract final class CostObjectMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -32,7 +32,7 @@ final class CostObjectMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}> * @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $columns = [ public const COLUMNS = [
'accounting_costobject_id' => ['name' => 'accounting_costobject_id', 'type' => 'int', 'internal' => 'id'], 'accounting_costobject_id' => ['name' => 'accounting_costobject_id', 'type' => 'int', 'internal' => 'id'],
'accounting_costobject_code' => ['name' => 'accounting_costobject_code', 'type' => 'string', 'internal' => 'code'], 'accounting_costobject_code' => ['name' => 'accounting_costobject_code', 'type' => 'string', 'internal' => 'code'],
]; ];
@ -43,7 +43,7 @@ final class CostObjectMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}> * @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $hasMany = [ public const HAS_MANY = [
'l11n' => [ 'l11n' => [
'mapper' => CostObjectL11nMapper::class, 'mapper' => CostObjectL11nMapper::class,
'table' => 'accounting_costobject_l11n', 'table' => 'accounting_costobject_l11n',
@ -59,7 +59,7 @@ final class CostObjectMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $model = CostObject::class; public const MODEL = CostObject::class;
/** /**
* Primary table. * Primary table.
@ -67,7 +67,7 @@ final class CostObjectMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'accounting_costobject'; public const TABLE = 'accounting_costobject';
/** /**
* Primary field name. * Primary field name.
@ -75,5 +75,5 @@ final class CostObjectMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'accounting_costobject_id'; public const PRIMARYFIELD ='accounting_costobject_id';
} }

View File

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

View File

@ -34,11 +34,11 @@ final class CostCenterMapperTest extends \PHPUnit\Framework\TestCase
$costcenter->l11n->name = 'Test CostCenter'; $costcenter->l11n->name = 'Test CostCenter';
$costcenter->l11n->description = 'Test description'; $costcenter->l11n->description = 'Test description';
$id = CostCenterMapper::create($costcenter); $id = CostCenterMapper::create()->execute($costcenter);
self::assertGreaterThan(0, $costcenter->getId()); self::assertGreaterThan(0, $costcenter->getId());
self::assertEquals($id, $costcenter->getId()); self::assertEquals($id, $costcenter->getId());
$costcenterR = CostCenterMapper::with('language', ISO639x1Enum::_EN)::get($costcenter->getId()); $costcenterR = CostCenterMapper::get()->with('l11n')->where('l11n/language', ISO639x1Enum::_EN)->where('id', $costcenter->getId())->execute();
self::assertEquals($costcenter->code, $costcenterR->code); self::assertEquals($costcenter->code, $costcenterR->code);
self::assertEquals($costcenter->l11n->name, $costcenterR->l11n->name); self::assertEquals($costcenter->l11n->name, $costcenterR->l11n->name);
self::assertEquals($costcenter->l11n->description, $costcenterR->l11n->description); self::assertEquals($costcenter->l11n->description, $costcenterR->l11n->description);

View File

@ -34,11 +34,11 @@ final class CostObjectMapperTest extends \PHPUnit\Framework\TestCase
$costobject->l11n->name = 'Test CostObject'; $costobject->l11n->name = 'Test CostObject';
$costobject->l11n->description = 'Test description'; $costobject->l11n->description = 'Test description';
$id = CostObjectMapper::create($costobject); $id = CostObjectMapper::create()->execute($costobject);
self::assertGreaterThan(0, $costobject->getId()); self::assertGreaterThan(0, $costobject->getId());
self::assertEquals($id, $costobject->getId()); self::assertEquals($id, $costobject->getId());
$costobjectR = CostObjectMapper::with('language', ISO639x1Enum::_EN)::get($costobject->getId()); $costobjectR = CostObjectMapper::get()->with('l11n')->where('l11n/language', ISO639x1Enum::_EN)->where('id', $costobject->getId())->execute();
self::assertEquals($costobject->code, $costobjectR->code); self::assertEquals($costobject->code, $costobjectR->code);
self::assertEquals($costobject->l11n->name, $costobjectR->l11n->name); self::assertEquals($costobject->l11n->name, $costobjectR->l11n->name);
self::assertEquals($costobject->l11n->description, $costobjectR->l11n->description); self::assertEquals($costobject->l11n->description, $costobjectR->l11n->description);