new datamapper mostly implemented

This commit is contained in:
Dennis Eichhorn 2021-12-11 11:54:17 +01:00
parent ff47ff2d01
commit 50eb9604c4
11 changed files with 96 additions and 122 deletions

View File

@ -52,12 +52,12 @@ final class Installer extends InstallerAbstract
$app = new WikiApp();
$app->name = 'Default';
$id = WikiAppMapper::create($app);
$id = WikiAppMapper::create()->execute($app);
$category = new WikiCategory();
$category->app = new NullWikiApp($id);
$category->setL11n('Default');
WikiCategoryMapper::create($category);
WikiCategoryMapper::create()->execute($category);
}
}

View File

@ -27,6 +27,7 @@ use Modules\Knowledgebase\Models\WikiDocMapper;
use Modules\Knowledgebase\Models\WikiStatus;
use Modules\Media\Models\NullMedia;
use Modules\Tag\Models\NullTag;
use phpOMS\Localization\ISO639x1Enum;
use phpOMS\Message\Http\HttpResponse;
use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Message\NotificationLevel;
@ -245,7 +246,7 @@ final class ApiController extends Controller
*/
public function apiWikiDocGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
$doc = WikiDocMapper::get((int) $request->getData('id'));
$doc = WikiDocMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Doc', 'Doc successfully returned', $doc);
}
@ -264,7 +265,7 @@ final class ApiController extends Controller
*/
public function apiWikiDocUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
$old = clone WikiDocMapper::get((int) $request->getData('id'));
$old = clone WikiDocMapper::get()->where('id', (int) $request->getData('id'))->execute();
$new = $this->updateDocFromRequest($request);
$this->updateModel($request->header->account, $old, $new, WikiDocMapper::class, 'doc', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Doc', 'Doc successfully updated', $new);
@ -281,7 +282,7 @@ final class ApiController extends Controller
*/
private function updateDocFromRequest(RequestAbstract $request) : WikiDoc
{
$doc = WikiDocMapper::get((int) $request->getData('id'));
$doc = WikiDocMapper::get()->where('id', (int) $request->getData('id'))->execute();
$doc->name = (string) ($request->getData('title') ?? $doc->name);
return $doc;
@ -302,7 +303,7 @@ final class ApiController extends Controller
*/
public function apiWikiDocDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
$doc = WikiDocMapper::get((int) $request->getData('id'));
$doc = WikiDocMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->deleteModel($request->header->account, $doc, WikiDocMapper::class, 'doc', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Doc', 'Doc successfully deleted', $doc);
}
@ -391,7 +392,12 @@ final class ApiController extends Controller
*/
public function apiWikiCategoryGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
$category = WikiCategoryMapper::get((int) $request->getData('id'));
$category = WikiCategoryMapper::get()
->with('name')
->where('id', (int) $request->getData('id'))
->where('name/language', ISO639x1Enum::_EN)
->execute();
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Category', 'Category successfully returned', $category);
}
@ -410,7 +416,7 @@ final class ApiController extends Controller
*/
public function apiWikiCategoryUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
$old = clone WikiCategoryMapper::get((int) $request->getData('id'));
$old = clone WikiCategoryMapper::get()->where('id', (int) $request->getData('id'))->execute();
$new = $this->updateCategoryFromRequest($request);
$this->updateModel($request->header->account, $old, $new, WikiCategoryMapper::class, 'category', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Category', 'Category successfully updated', $new);
@ -427,7 +433,7 @@ final class ApiController extends Controller
*/
private function updateCategoryFromRequest(RequestAbstract $request) : WikiCategory
{
$category = WikiCategoryMapper::get((int) $request->getData('id'));
$category = WikiCategoryMapper::get()->where('id', (int) $request->getData('id'))->execute();
$category->setL11n($request->getData('name') ?? $category->getL11n(), $request->getData('language') ?? $request->getLanguage());
return $category;
@ -448,7 +454,7 @@ final class ApiController extends Controller
*/
public function apiWikiCategoryDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
$category = WikiCategoryMapper::get((int) $request->getData('id'));
$category = WikiCategoryMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->deleteModel($request->header->account, $category, WikiCategoryMapper::class, 'category', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Category', 'Category successfully deleted', $category);
}
@ -531,7 +537,7 @@ final class ApiController extends Controller
*/
public function apiWikiAppGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
$app = WikiAppMapper::get((int) $request->getData('id'));
$app = WikiAppMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'App', 'App successfully returned', $app);
}
@ -550,7 +556,7 @@ final class ApiController extends Controller
*/
public function apiWikiAppUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
$old = clone WikiAppMapper::get((int) $request->getData('id'));
$old = clone WikiAppMapper::get()->where('id', (int) $request->getData('id'))->execute();
$new = $this->updateAppFromRequest($request);
$this->updateModel($request->header->account, $old, $new, WikiAppMapper::class, 'app', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'App', 'App successfully updated', $new);
@ -567,7 +573,7 @@ final class ApiController extends Controller
*/
private function updateAppFromRequest(RequestAbstract $request) : WikiApp
{
$app = WikiAppMapper::get((int) $request->getData('id'));
$app = WikiAppMapper::get()->where('id', (int) $request->getData('id'))->execute();
$app->name = (string) ($request->getData('name') ?? $app->name);
return $app;
@ -588,7 +594,7 @@ final class ApiController extends Controller
*/
public function apiWikiAppDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
$app = WikiAppMapper::get((int) $request->getData('id'));
$app = WikiAppMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->deleteModel($request->header->account, $app, WikiAppMapper::class, 'app', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'App', 'App successfully deleted', $app);
}

View File

@ -24,6 +24,7 @@ use Modules\Knowledgebase\Models\WikiDocMapper;
use phpOMS\Account\PermissionType;
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;
@ -79,13 +80,13 @@ final class BackendController extends Controller
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-dashboard');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response));
$categories = WikiCategoryMapper::with('language', $response->getLanguage())::getByParentAndApp($request->hasData('category') ? (int) $request->getData('category') : null, $app, 2);
$categories = WikiCategoryMapper::getByParentAndApp($request->hasData('category') ? (int) $request->getData('category') : null, $app)->where('name/language', $response->getLanguage())->execute();
$view->setData('categories', $categories);
$documents = WikiDocMapper::with('language', $response->getLanguage())::getNewestByApp($app, 10);
$documents = WikiDocMapper::getAll()->where('app', $app)->where('language', $response->getLanguage())->limit(25)->sort('createdAt', OrderType::DESC)->execute();
$view->setData('docs', $documents);
$apps = WikiAppMapper::getAll();
$apps = WikiAppMapper::getAll()->execute();
$view->setData('apps', $apps);
return $view;
@ -110,7 +111,7 @@ final class BackendController extends Controller
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-app-list');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response));
$list = WikiAppMapper::getAll();
$list = WikiAppMapper::getAll()->execute();
$view->setData('apps', $list);
return $view;
@ -135,7 +136,7 @@ final class BackendController extends Controller
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-app-single');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response));
$app = WikiAppMapper::get((int) $request->getData('id'));
$app = WikiAppMapper::get()->where('id', (int) $request->getData('id'))->execute();
$view->setData('app', $app);
return $view;
@ -185,7 +186,7 @@ final class BackendController extends Controller
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-category-list');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response));
$list = WikiCategoryMapper::with('language', $response->getLanguage())::getByApp($app, 2);
$list = WikiCategoryMapper::getByApp($app)->where('name/language', $response->getLanguage())->execute();
$view->setData('categories', $list);
return $view;
@ -210,7 +211,7 @@ final class BackendController extends Controller
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-category-single');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response));
$category = WikiCategoryMapper::get((int) $request->getData('id'));
$category = WikiCategoryMapper::get()->where('id', (int) $request->getData('id'))->execute();
$view->setData('category', $category);
return $view;
@ -258,7 +259,7 @@ final class BackendController extends Controller
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-doc-list');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response));
$list = WikiDocMapper::getAll();
$list = WikiDocMapper::getAll()->limit(25)->execute();
$view->setData('docs', $list);
return $view;
@ -283,7 +284,7 @@ final class BackendController extends Controller
$app = (int) ($request->getData('app') ?? $this->app->orgId);
$lang = $response->getLanguage();
$document = WikiDocMapper::with('language', $lang)::get((int) $request->getData('id'));
$document = WikiDocMapper::get()->where('id', (int) $request->getData('id'))->where('language', $request->getLanguage())->execute();
$accountId = $request->header->account;
if (!$this->app->accountManager->get($accountId)->hasPermission(
@ -297,7 +298,7 @@ final class BackendController extends Controller
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-doc-single');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response));
$categories = WikiCategoryMapper::with('language', $lang)::getByParentAndApp($request->hasData('category') ? (int) $request->getData('category') : null, $app, 2);
$categories = WikiCategoryMapper::getByParentAndApp($request->hasData('category') ? (int) $request->getData('category') : null, $app)->where('name/language', $response->getLanguage())->execute();;
$view->setData('categories', $categories);
$view->setData('document', $document);
$view->addData('editable', $this->app->accountManager->get($accountId)->hasPermission(
@ -365,7 +366,7 @@ final class BackendController extends Controller
$tagSelector = new \Modules\Tag\Theme\Backend\Components\TagSelector\BaseView($this->app->l11nManager, $request, $response);
$view->addData('tagSelector', $tagSelector);
$view->addData('doc', WikiDocMapper::get((int) ($request->getData('id') ?? 0)));
$view->addData('doc', WikiDocMapper::get()->where('id', (int) ($request->getData('id') ?? 0))->execute());
return $view;
}

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Knowledgebase\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 WikiAppMapper extends DataMapperAbstract
final class WikiAppMapper extends DataMapperFactory
{
/**
* Columns.
@ -32,7 +32,7 @@ final class WikiAppMapper 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 = [
'wiki_app_id' => ['name' => 'wiki_app_id', 'type' => 'int', 'internal' => 'id'],
'wiki_app_name' => ['name' => 'wiki_app_name', 'type' => 'string', 'internal' => 'name'],
];
@ -43,7 +43,7 @@ final class WikiAppMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $table = 'wiki_app';
public const TABLE = 'wiki_app';
/**
* Primary field name.
@ -51,5 +51,5 @@ final class WikiAppMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $primaryField = 'wiki_app_id';
public const PRIMARYFIELD ='wiki_app_id';
}

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Knowledgebase\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/**
* Category mapper class.
@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
* @link https://orange-management.org
* @since 1.0.0
*/
final class WikiCategoryL11nMapper extends DataMapperAbstract
final class WikiCategoryL11nMapper extends DataMapperFactory
{
/**
* Columns.
@ -32,7 +32,7 @@ final class WikiCategoryL11nMapper 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 = [
'wiki_category_l11n_id' => ['name' => 'wiki_category_l11n_id', 'type' => 'int', 'internal' => 'id'],
'wiki_category_l11n_name' => ['name' => 'wiki_category_l11n_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true],
'wiki_category_l11n_category' => ['name' => 'wiki_category_l11n_category', 'type' => 'int', 'internal' => 'category'],
@ -45,7 +45,7 @@ final class WikiCategoryL11nMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $table = 'wiki_category_l11n';
public const TABLE = 'wiki_category_l11n';
/**
* Primary field name.
@ -53,5 +53,5 @@ final class WikiCategoryL11nMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $primaryField = 'wiki_category_l11n_id';
public const PRIMARYFIELD ='wiki_category_l11n_id';
}

View File

@ -14,8 +14,8 @@ declare(strict_types=1);
namespace Modules\Knowledgebase\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract;
use phpOMS\DataStorage\Database\RelationType;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\DataStorage\Database\Mapper\ReadMapper;
/**
* Mapper class.
@ -25,7 +25,7 @@ use phpOMS\DataStorage\Database\RelationType;
* @link https://orange-management.org
* @since 1.0.0
*/
final class WikiCategoryMapper extends DataMapperAbstract
final class WikiCategoryMapper extends DataMapperFactory
{
/**
* Columns.
@ -33,7 +33,7 @@ final class WikiCategoryMapper 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 = [
'wiki_category_id' => ['name' => 'wiki_category_id', 'type' => 'int', 'internal' => 'id'],
'wiki_category_app' => ['name' => 'wiki_category_app', 'type' => 'int', 'internal' => 'app'],
'wiki_category_virtual' => ['name' => 'wiki_category_virtual', 'type' => 'string', 'internal' => 'virtualPath'],
@ -46,13 +46,12 @@ final class WikiCategoryMapper 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 = [
'name' => [
'mapper' => WikiCategoryL11nMapper::class,
'table' => 'wiki_category_l11n',
'self' => 'wiki_category_l11n_category',
'column' => 'name',
'conditional' => true,
'external' => null,
],
];
@ -63,7 +62,7 @@ final class WikiCategoryMapper extends DataMapperAbstract
* @var array<string, array<string, null|string>>
* @since 1.0.0
*/
protected static array $belongsTo = [
public const BELONGS_TO = [
'parent' => [
'mapper' => self::class,
'external' => 'wiki_category_parent',
@ -80,7 +79,7 @@ final class WikiCategoryMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $table = 'wiki_category';
public const TABLE = 'wiki_category';
/**
* Primary field name.
@ -88,7 +87,7 @@ final class WikiCategoryMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $primaryField = 'wiki_category_id';
public const PRIMARYFIELD ='wiki_category_id';
/**
* Parent field name.
@ -103,36 +102,16 @@ final class WikiCategoryMapper extends DataMapperAbstract
*
* @param null|int $value Parent value id
* @param int $app App
* @param int $depth Relation depth
*
* @return array
* @return ReadMapper
*
* @since 1.0.0
*/
public static function getByParentAndApp(int $value = null, int $app = 1, int $depth = 3) : array
public static function getByParentAndApp(int $value = null, int $app = 1) : ReadMapper
{
$query = self::getQuery();
$query->where(static::$table . '_d' . $depth . '.' . static::$parent, '=', $value)
->andWhere(static::$table . '_d' . $depth . '.wiki_category_app', '=', $app);
return self::getAllByQuery($query, RelationType::ALL, $depth);
}
/**
* Get by app.
*
* @param int $app App
* @param int $depth Relation depth
*
* @return array
*
* @since 1.0.0
*/
public static function getByApp(int $app, int $depth = 3) : array
{
$query = self::getQuery();
$query->where(static::$table . '_d' . $depth . '.wiki_category_app', '=', $app);
return self::getAllByQuery($query, RelationType::ALL, $depth);
return self::getAll()
->with('name')
->where('parent', $value)
->where('app', $app);
}
}

View File

@ -16,9 +16,8 @@ namespace Modules\Knowledgebase\Models;
use Modules\Media\Models\MediaMapper;
use Modules\Tag\Models\TagMapper;
use phpOMS\DataStorage\Database\DataMapperAbstract;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\DataStorage\Database\Query\Builder;
use phpOMS\DataStorage\Database\RelationType;
/**
* Mapper class.
@ -28,7 +27,7 @@ use phpOMS\DataStorage\Database\RelationType;
* @link https://orange-management.org
* @since 1.0.0
*/
final class WikiDocMapper extends DataMapperAbstract
final class WikiDocMapper extends DataMapperFactory
{
/**
* Columns.
@ -36,7 +35,7 @@ final class WikiDocMapper 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 = [
'wiki_article_id' => ['name' => 'wiki_article_id', 'type' => 'int', 'internal' => 'id'],
'wiki_article_app' => ['name' => 'wiki_article_app', 'type' => 'int', 'internal' => 'app'],
'wiki_article_title' => ['name' => 'wiki_article_title', 'type' => 'string', 'internal' => 'name'],
@ -53,7 +52,7 @@ final class WikiDocMapper 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 = [
'tags' => [
'mapper' => TagMapper::class,
'table' => 'wiki_tag',
@ -74,7 +73,7 @@ final class WikiDocMapper extends DataMapperAbstract
* @var array<string, array<string, null|string>>
* @since 1.0.0
*/
protected static array $belongsTo = [
public const BELONGS_TO = [
'category' => [
'mapper' => WikiCategoryMapper::class,
'external' => 'wiki_article_category',
@ -91,7 +90,7 @@ final class WikiDocMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $table = 'wiki_article';
public const TABLE = 'wiki_article';
/**
* Primary field name.
@ -99,36 +98,5 @@ final class WikiDocMapper extends DataMapperAbstract
* @var string
* @since 1.0.0
*/
protected static string $primaryField = 'wiki_article_id';
/**
* Get newest.
*
* This will fall back to the insert id if no datetime column is present.
*
* @param int $app App
* @param int $limit Newest limit
* @param Builder $query Pre-defined query
* @param int $relations Load relations
* @param int $depth Relation depth
*
* @return array
*
* @since 1.0.0
*/
public static function getNewestByApp(int $app, int $limit = 1, Builder $query = null, int $relations = RelationType::ALL, int $depth = 3) : array
{
$query ??= self::getQuery(null, [], $relations, $depth);
$query->where(static::$table . '_d' . $depth . '.wiki_article_app', '=', $app)
->limit($limit);
if (!empty(static::$createdAt)) {
$query->orderBy(static::$table . '_d' . $depth . '.' . static::$columns[static::$createdAt]['name'], 'DESC');
} else {
$query->orderBy(static::$table . '_d' . $depth . '.' . static::$columns[static::$primaryField]['name'], 'DESC');
}
return self::getAllByQuery($query, $relations, $depth);
}
public const PRIMARYFIELD ='wiki_article_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 WikiAppMapperTest extends \PHPUnit\Framework\TestCase
$app->name = 'Test Category';
$id = WikiAppMapper::create($app);
$id = WikiAppMapper::create()->execute($app);
self::assertGreaterThan(0, $app->getId());
self::assertEquals($id, $app->getId());
$appR = WikiAppMapper::get($app->getId());
$appR = WikiAppMapper::get()->where('id', $app->getId())->execute();
self::assertEquals($app->name, $appR->name);
}
}

View File

@ -18,6 +18,7 @@ use Modules\Knowledgebase\Models\NullWikiApp;
use Modules\Knowledgebase\Models\NullWikiCategory;
use Modules\Knowledgebase\Models\WikiCategory;
use Modules\Knowledgebase\Models\WikiCategoryMapper;
use phpOMS\Localization\ISO639x1Enum;
/**
* @testdox Modules\tests\Knowledgebase\Models\WikiCategoryMapperTest: Wiki category mapper
@ -45,14 +46,14 @@ final class WikiCategoryMapperTest extends \PHPUnit\Framework\TestCase
{
$this->category->setL11n('Test Category');
$id = WikiCategoryMapper::create($this->category);
$id = WikiCategoryMapper::create()->execute($this->category);
self::assertGreaterThan(0, $this->category->getId());
self::assertEquals($id, $this->category->getId());
$categoryR = WikiCategoryMapper::get($this->category->getId());
$categoryR = WikiCategoryMapper::get()->with('name')->where('id', $this->category->getId())->where('name/language', ISO639x1Enum::_EN)->execute();
self::assertEquals($this->category->getL11n(), $categoryR->getL11n());
self::assertGreaterThan(0, \count(WikiCategoryMapper::getByApp(1)));
self::assertGreaterThan(0, \count(WikiCategoryMapper::getAll()->where('app', 1)->execute()));
}
/**
@ -66,14 +67,28 @@ final class WikiCategoryMapperTest extends \PHPUnit\Framework\TestCase
$this->category->setL11n('Test Category2');
$this->category->parent = new NullWikiCategory(1);
$id = WikiCategoryMapper::create($this->category);
$id = WikiCategoryMapper::create()->execute($this->category);
self::assertGreaterThan(0, $this->category->getId());
self::assertEquals($id, $this->category->getId());
$categoryR = WikiCategoryMapper::get($this->category->getId());
$categoryR = WikiCategoryMapper::get()
->with('name')
->where('id', $this->category->getId())
->where('name/language', ISO639x1Enum::_EN)
->execute();
self::assertEquals($this->category->getL11n(), $categoryR->getL11n());
self::assertEquals($this->category->parent->getId(), $categoryR->parent->getId());
self::assertGreaterThan(0, \count(WikiCategoryMapper::getByParentAndApp(1, 1)));
self::assertGreaterThan(0,
\count(
WikiCategoryMapper::getAll()
->with('name')
->where('parent', 1)
->where('app', 1)
->where('name/language', ISO639x1Enum::_EN)
->execute()
)
);
}
}

View File

@ -18,6 +18,7 @@ use Modules\Knowledgebase\Models\NullWikiCategory;
use Modules\Knowledgebase\Models\WikiDoc;
use Modules\Knowledgebase\Models\WikiDocMapper;
use Modules\Knowledgebase\Models\WikiStatus;
use phpOMS\DataStorage\Database\Query\OrderType;
/**
* @testdox Modules\tests\Knowledgebase\Models\WikiDocMapperTest: Wiki document mapper
@ -41,17 +42,21 @@ final class WikiDocMapperTest extends \PHPUnit\Framework\TestCase
$doc->category = new NullWikiCategory(1);
$doc->setLanguage('en');
$id = WikiDocMapper::create($doc);
$id = WikiDocMapper::create()->execute($doc);
self::assertGreaterThan(0, $doc->getId());
self::assertEquals($id, $doc->getId());
$docR = WikiDocMapper::get($doc->getId());
$docR = WikiDocMapper::get()->where('id', $doc->getId())->execute();
self::assertEquals($doc->name, $docR->name);
self::assertEquals($doc->doc, $docR->doc);
self::assertEquals($doc->getStatus(), $docR->getStatus());
self::assertEquals($doc->getLanguage(), $docR->getLanguage());
self::assertEquals($doc->category->getId(), $docR->category->getId());
self::assertGreaterThan(0, \count(WikiDocMapper::getNewestByApp(1)));
self::assertGreaterThan(0,
\count(
WikiDocMapper::getAll()->where('app', 1)->sort('id', OrderType::DESC)->execute()
)
);
}
}