new datamapper mostly implemented

This commit is contained in:
Dennis Eichhorn 2021-12-11 11:54:17 +01:00
parent 50e9f611e7
commit a46f0d69d7
6 changed files with 58 additions and 43 deletions

View File

@ -70,7 +70,10 @@ final class BackendController extends Controller
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000801001, $request, $response)); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000801001, $request, $response));
$path = \str_replace('+', ' ', (string) ($request->getData('path') ?? '/')); $path = \str_replace('+', ' ', (string) ($request->getData('path') ?? '/'));
$surveys = SurveyTemplateMapper::with('language', $response->getLanguage())::getByVirtualPath($path); $surveys = SurveyTemplateMapper::getByVirtualPath($path)
->where('tags/title/language', $response->getLanguage())
->where('l11n/language', $response->getLanguage())
->execute();
list($collection, $parent) = CollectionMapper::getCollectionsByPath($path); list($collection, $parent) = CollectionMapper::getCollectionsByPath($path);
@ -122,7 +125,21 @@ final class BackendController extends Controller
$view->setTemplate('/Modules/Surveys/Theme/Backend/surveys-create'); $view->setTemplate('/Modules/Surveys/Theme/Backend/surveys-create');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000801001, $request, $response)); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000801001, $request, $response));
$survey = SurveyTemplateMapper::get($request->getData('id')); $survey = SurveyTemplateMapper::get()
->with('createdBy')
->with('elements')
->with('elements/l11n')
->with('elements/labels')
->with('media')
->with('l11n')
->with('tags')
->with('tags/title')
->where('id', $request->getData('id'))
->where('tags/title/language', $response->getLanguage())
->where('l11n/language', $response->getLanguage())
->where('elements/l11n/language', $response->getLanguage())
->where('elements/labels/language', $response->getLanguage())
->execute();
$view->addData('survey', $survey); $view->addData('survey', $survey);
return $view; return $view;

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Surveys\Models; namespace Modules\Surveys\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* Tag mapper class. * Tag 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 SurveyTemplateElementL11nMapper extends DataMapperAbstract final class SurveyTemplateElementL11nMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -32,7 +32,7 @@ final class SurveyTemplateElementL11nMapper 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 = [
'survey_template_element_l11n_id' => ['name' => 'survey_template_element_l11n_id', 'type' => 'int', 'internal' => 'id'], 'survey_template_element_l11n_id' => ['name' => 'survey_template_element_l11n_id', 'type' => 'int', 'internal' => 'id'],
'survey_template_element_l11n_text' => ['name' => 'survey_template_element_l11n_text', 'type' => 'string', 'internal' => 'text', 'autocomplete' => true], 'survey_template_element_l11n_text' => ['name' => 'survey_template_element_l11n_text', 'type' => 'string', 'internal' => 'text', 'autocomplete' => true],
'survey_template_element_l11n_description' => ['name' => 'survey_template_element_l11n_description', 'type' => 'string', 'internal' => 'description'], 'survey_template_element_l11n_description' => ['name' => 'survey_template_element_l11n_description', 'type' => 'string', 'internal' => 'description'],
@ -47,7 +47,7 @@ final class SurveyTemplateElementL11nMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'survey_template_element_l11n'; public const TABLE = 'survey_template_element_l11n';
/** /**
* Primary field name. * Primary field name.
@ -55,5 +55,5 @@ final class SurveyTemplateElementL11nMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'survey_template_element_l11n_id'; public const PRIMARYFIELD ='survey_template_element_l11n_id';
} }

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Surveys\Models; namespace Modules\Surveys\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* Mapper class. * 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 SurveyTemplateElementMapper extends DataMapperAbstract final class SurveyTemplateElementMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -32,7 +32,7 @@ final class SurveyTemplateElementMapper 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 = [
'survey_template_element_id' => ['name' => 'survey_template_element_id', 'type' => 'int', 'internal' => 'id'], 'survey_template_element_id' => ['name' => 'survey_template_element_id', 'type' => 'int', 'internal' => 'id'],
'survey_template_element_type' => ['name' => 'survey_template_element_type', 'type' => 'int', 'internal' => 'type'], 'survey_template_element_type' => ['name' => 'survey_template_element_type', 'type' => 'int', 'internal' => 'type'],
'survey_template_element_order' => ['name' => 'survey_template_element_order', 'type' => 'int', 'internal' => 'order'], 'survey_template_element_order' => ['name' => 'survey_template_element_order', 'type' => 'int', 'internal' => 'order'],
@ -47,19 +47,17 @@ final class SurveyTemplateElementMapper 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' => SurveyTemplateElementL11nMapper::class, 'mapper' => SurveyTemplateElementL11nMapper::class,
'table' => 'survey_template_element_l11n', 'table' => 'survey_template_element_l11n',
'self' => 'survey_template_element_l11n_element', 'self' => 'survey_template_element_l11n_element',
'conditional' => true,
'external' => null, 'external' => null,
], ],
'labels' => [ 'labels' => [
'mapper' => SurveyTemplateLabelL11nMapper::class, 'mapper' => SurveyTemplateLabelL11nMapper::class,
'table' => 'survey_template_element_label_l11n', 'table' => 'survey_template_element_label_l11n',
'self' => 'survey_template_element_label_l11n_element', 'self' => 'survey_template_element_label_l11n_element',
'conditional' => true,
'external' => null, 'external' => null,
], ],
]; ];
@ -70,7 +68,7 @@ final class SurveyTemplateElementMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'survey_template_element'; public const TABLE = 'survey_template_element';
/** /**
* Created at. * Created at.
@ -78,7 +76,7 @@ final class SurveyTemplateElementMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $createdAt = 'survey_template_element_created_at'; public const CREATED_AT = 'survey_template_element_created_at';
/** /**
* Primary field name. * Primary field name.
@ -86,5 +84,5 @@ final class SurveyTemplateElementMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'survey_template_element_id'; public const PRIMARYFIELD ='survey_template_element_id';
} }

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Surveys\Models; namespace Modules\Surveys\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* Tag mapper class. * Tag 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 SurveyTemplateL11nMapper extends DataMapperAbstract final class SurveyTemplateL11nMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -32,7 +32,7 @@ final class SurveyTemplateL11nMapper 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 = [
'survey_template_l11n_id' => ['name' => 'survey_template_l11n_id', 'type' => 'int', 'internal' => 'id'], 'survey_template_l11n_id' => ['name' => 'survey_template_l11n_id', 'type' => 'int', 'internal' => 'id'],
'survey_template_l11n_title' => ['name' => 'survey_template_l11n_title', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true], 'survey_template_l11n_title' => ['name' => 'survey_template_l11n_title', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true],
'survey_template_l11n_description' => ['name' => 'survey_template_l11n_description', 'type' => 'string', 'internal' => 'description'], 'survey_template_l11n_description' => ['name' => 'survey_template_l11n_description', 'type' => 'string', 'internal' => 'description'],
@ -47,7 +47,7 @@ final class SurveyTemplateL11nMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'survey_template_l11n'; public const TABLE = 'survey_template_l11n';
/** /**
* Primary field name. * Primary field name.
@ -55,5 +55,5 @@ final class SurveyTemplateL11nMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'survey_template_l11n_id'; public const PRIMARYFIELD ='survey_template_l11n_id';
} }

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Surveys\Models; namespace Modules\Surveys\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* Tag mapper class. * Tag 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 SurveyTemplateLabelL11nMapper extends DataMapperAbstract final class SurveyTemplateLabelL11nMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -32,7 +32,7 @@ final class SurveyTemplateLabelL11nMapper 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 = [
'survey_template_element_label_l11n_id' => ['name' => 'survey_template_element_label_l11n_id', 'type' => 'int', 'internal' => 'id'], 'survey_template_element_label_l11n_id' => ['name' => 'survey_template_element_label_l11n_id', 'type' => 'int', 'internal' => 'id'],
'survey_template_element_label_l11n_title' => ['name' => 'survey_template_element_label_l11n_title', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true], 'survey_template_element_label_l11n_title' => ['name' => 'survey_template_element_label_l11n_title', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true],
'survey_template_element_label_l11n_element' => ['name' => 'survey_template_element_label_l11n_element', 'type' => 'int', 'internal' => 'element'], 'survey_template_element_label_l11n_element' => ['name' => 'survey_template_element_label_l11n_element', 'type' => 'int', 'internal' => 'element'],
@ -46,7 +46,7 @@ final class SurveyTemplateLabelL11nMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'survey_template_element_label_l11n'; public const TABLE = 'survey_template_element_label_l11n';
/** /**
* Primary field name. * Primary field name.
@ -54,5 +54,5 @@ final class SurveyTemplateLabelL11nMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'survey_template_element_label_l11n_id'; public const PRIMARYFIELD ='survey_template_element_label_l11n_id';
} }

View File

@ -17,8 +17,8 @@ namespace Modules\Surveys\Models;
use Modules\Admin\Models\AccountMapper; use Modules\Admin\Models\AccountMapper;
use Modules\Media\Models\MediaMapper; use Modules\Media\Models\MediaMapper;
use Modules\Tag\Models\TagMapper; use Modules\Tag\Models\TagMapper;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\DataStorage\Database\RelationType; use phpOMS\DataStorage\Database\Mapper\ReadMapper;
/** /**
* Mapper class. * Mapper class.
@ -28,7 +28,7 @@ use phpOMS\DataStorage\Database\RelationType;
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */
final class SurveyTemplateMapper extends DataMapperAbstract final class SurveyTemplateMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -36,7 +36,7 @@ final class SurveyTemplateMapper 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 = [
'survey_template_id' => ['name' => 'survey_template_id', 'type' => 'int', 'internal' => 'id'], 'survey_template_id' => ['name' => 'survey_template_id', 'type' => 'int', 'internal' => 'id'],
'survey_template_status' => ['name' => 'survey_template_status', 'type' => 'int', 'internal' => 'status'], 'survey_template_status' => ['name' => 'survey_template_status', 'type' => 'int', 'internal' => 'status'],
'survey_template_public_result' => ['name' => 'survey_template_public_result', 'type' => 'bool', 'internal' => 'hasPublicResult'], 'survey_template_public_result' => ['name' => 'survey_template_public_result', 'type' => 'bool', 'internal' => 'hasPublicResult'],
@ -53,7 +53,7 @@ final class SurveyTemplateMapper 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 = [
'elements' => [ 'elements' => [
'mapper' => SurveyTemplateElementMapper::class, 'mapper' => SurveyTemplateElementMapper::class,
'table' => 'survey_template_element', 'table' => 'survey_template_element',
@ -64,7 +64,6 @@ final class SurveyTemplateMapper extends DataMapperAbstract
'mapper' => SurveyTemplateL11nMapper::class, 'mapper' => SurveyTemplateL11nMapper::class,
'table' => 'survey_template_l11n', 'table' => 'survey_template_l11n',
'self' => 'survey_template_l11n_template', 'self' => 'survey_template_l11n_template',
'conditional' => true,
'external' => null, 'external' => null,
], ],
'tags' => [ 'tags' => [
@ -87,7 +86,7 @@ final class SurveyTemplateMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, external:string}> * @var array<string, array{mapper:string, external:string}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $belongsTo = [ public const BELONGS_TO = [
'createdBy' => [ 'createdBy' => [
'mapper' => AccountMapper::class, 'mapper' => AccountMapper::class,
'external' => 'survey_template_created_by', 'external' => 'survey_template_created_by',
@ -100,7 +99,7 @@ final class SurveyTemplateMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'survey_template'; public const TABLE = 'survey_template';
/** /**
* Created at. * Created at.
@ -108,7 +107,7 @@ final class SurveyTemplateMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $createdAt = 'survey_template_created_at'; public const CREATED_AT = 'survey_template_created_at';
/** /**
* Primary field name. * Primary field name.
@ -116,23 +115,24 @@ final class SurveyTemplateMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'survey_template_id'; public const PRIMARYFIELD ='survey_template_id';
/** /**
* Get editor doc based on virtual path. * Get editor doc based on virtual path.
* *
* @param string $virtualPath Virtual path * @param string $virtualPath Virtual path
* *
* @return array * @return ReadMapper
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public static function getByVirtualPath(string $virtualPath = '/') : array public static function getByVirtualPath(string $virtualPath = '/') : ReadMapper
{ {
$depth = 2; return self::getAll()
$query = self::getQuery(depth: $depth); ->with('createdBy')
$query->where(self::$table . '_d' . $depth . '.survey_template_virtual', '=', $virtualPath); ->with('l11n')
->with('tags')
return self::getAllByQuery($query, RelationType::ALL, $depth); ->with('tags/title')
->where('virtualPath', $virtualPath);
} }
} }