Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
LocalizationMapper
n/a
0 / 0
n/a
0 / 0
0
n/a
0 / 0
1<?php
2/**
3 * Jingga
4 *
5 * PHP Version 8.1
6 *
7 * @package   Modules\Admin\Models
8 * @copyright Dennis Eichhorn
9 * @license   OMS License 2.0
10 * @version   1.0.0
11 * @link      https://jingga.app
12 */
13declare(strict_types=1);
14
15namespace Modules\Admin\Models;
16
17use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
18use phpOMS\Localization\Defaults\CountryMapper;
19use phpOMS\Localization\Defaults\CurrencyMapper;
20use phpOMS\Localization\Defaults\LanguageMapper;
21use phpOMS\Localization\Localization;
22
23/**
24 * Localization mapper.
25 *
26 * @package Modules\Admin\Models
27 * @license OMS License 2.0
28 * @link    https://jingga.app
29 * @since   1.0.0
30 *
31 * @template T of Localization
32 * @extends DataMapperFactory<T>
33 */
34final class LocalizationMapper extends DataMapperFactory
35{
36    /**
37     * Columns.
38     *
39     * @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
40     * @since 1.0.0
41     */
42    public const COLUMNS = [
43        'l11n_id'                   => ['name' => 'l11n_id',                   'type' => 'int',    'internal' => 'id'],
44        'l11n_country'              => ['name' => 'l11n_country',              'type' => 'string', 'internal' => 'country'],
45        'l11n_language'             => ['name' => 'l11n_language',             'type' => 'string', 'internal' => 'language'],
46        'l11n_currency'             => ['name' => 'l11n_currency',             'type' => 'string', 'internal' => 'currency'],
47        'l11n_currency_format'      => ['name' => 'l11n_currency_format',      'type' => 'string', 'internal' => 'currencyFormat'],
48        'l11n_number_thousand'      => ['name' => 'l11n_number_thousand',      'type' => 'string', 'internal' => 'thousands'],
49        'l11n_number_decimal'       => ['name' => 'l11n_number_decimal',       'type' => 'string', 'internal' => 'decimal'],
50        'l11n_angle'                => ['name' => 'l11n_angle',                'type' => 'string', 'internal' => 'angle'],
51        'l11n_temperature'          => ['name' => 'l11n_temperature',          'type' => 'string', 'internal' => 'temperature'],
52        'l11n_weight_very_light'    => ['name' => 'l11n_weight_very_light',    'type' => 'string', 'internal' => 'weight/very_light'],
53        'l11n_weight_light'         => ['name' => 'l11n_weight_light',         'type' => 'string', 'internal' => 'weight/light'],
54        'l11n_weight_medium'        => ['name' => 'l11n_weight_medium',        'type' => 'string', 'internal' => 'weight/medium'],
55        'l11n_weight_heavy'         => ['name' => 'l11n_weight_heavy',         'type' => 'string', 'internal' => 'weight/heavy'],
56        'l11n_weight_very_heavy'    => ['name' => 'l11n_weight_very_heavy',    'type' => 'string', 'internal' => 'weight/very_heavy'],
57        'l11n_speed_very_slow'      => ['name' => 'l11n_speed_very_slow',      'type' => 'string', 'internal' => 'speed/very_slow'],
58        'l11n_speed_slow'           => ['name' => 'l11n_speed_slow',           'type' => 'string', 'internal' => 'speed/slow'],
59        'l11n_speed_medium'         => ['name' => 'l11n_speed_medium',         'type' => 'string', 'internal' => 'speed/medium'],
60        'l11n_speed_fast'           => ['name' => 'l11n_speed_fast',           'type' => 'string', 'internal' => 'speed/fast'],
61        'l11n_speed_very_fast'      => ['name' => 'l11n_speed_very_fast',      'type' => 'string', 'internal' => 'speed/very_fast'],
62        'l11n_speed_sea'            => ['name' => 'l11n_speed_sea',            'type' => 'string', 'internal' => 'speed/sea'],
63        'l11n_length_very_short'    => ['name' => 'l11n_length_very_short',    'type' => 'string', 'internal' => 'length/very_short'],
64        'l11n_length_short'         => ['name' => 'l11n_length_short',         'type' => 'string', 'internal' => 'length/short'],
65        'l11n_length_medium'        => ['name' => 'l11n_length_medium',        'type' => 'string', 'internal' => 'length/medium'],
66        'l11n_length_long'          => ['name' => 'l11n_length_long',          'type' => 'string', 'internal' => 'length/long'],
67        'l11n_length_very_long'     => ['name' => 'l11n_length_very_long',     'type' => 'string', 'internal' => 'length/very_long'],
68        'l11n_length_sea'           => ['name' => 'l11n_length_sea',           'type' => 'string', 'internal' => 'length/sea'],
69        'l11n_area_very_small'      => ['name' => 'l11n_area_very_small',      'type' => 'string', 'internal' => 'area/very_small'],
70        'l11n_area_small'           => ['name' => 'l11n_area_small',           'type' => 'string', 'internal' => 'area/small'],
71        'l11n_area_medium'          => ['name' => 'l11n_area_medium',          'type' => 'string', 'internal' => 'area/medium'],
72        'l11n_area_large'           => ['name' => 'l11n_area_large',           'type' => 'string', 'internal' => 'area/large'],
73        'l11n_area_very_large'      => ['name' => 'l11n_area_very_large',      'type' => 'string', 'internal' => 'area/very_large'],
74        'l11n_volume_very_small'    => ['name' => 'l11n_volume_very_small',    'type' => 'string', 'internal' => 'volume/very_small'],
75        'l11n_volume_small'         => ['name' => 'l11n_volume_small',         'type' => 'string', 'internal' => 'volume/small'],
76        'l11n_volume_medium'        => ['name' => 'l11n_volume_medium',        'type' => 'string', 'internal' => 'volume/medium'],
77        'l11n_volume_large'         => ['name' => 'l11n_volume_large',         'type' => 'string', 'internal' => 'volume/large'],
78        'l11n_volume_very_large'    => ['name' => 'l11n_volume_very_large',    'type' => 'string', 'internal' => 'volume/very_large'],
79        'l11n_volume_teaspoon'      => ['name' => 'l11n_volume_teaspoon',      'type' => 'string', 'internal' => 'volume/teaspoon'],
80        'l11n_volume_tablespoon'    => ['name' => 'l11n_volume_tablespoon',    'type' => 'string', 'internal' => 'volume/tablespoon'],
81        'l11n_volume_glass'         => ['name' => 'l11n_volume_glass',         'type' => 'string', 'internal' => 'volume/glass'],
82        'l11n_timezone'             => ['name' => 'l11n_timezone',             'type' => 'string', 'internal' => 'timezone'],
83        'l11n_datetime_very_short'  => ['name' => 'l11n_datetime_very_short',  'type' => 'string', 'internal' => 'datetime/very_short'],
84        'l11n_datetime_short'       => ['name' => 'l11n_datetime_short',       'type' => 'string', 'internal' => 'datetime/short'],
85        'l11n_datetime_medium'      => ['name' => 'l11n_datetime_medium',      'type' => 'string', 'internal' => 'datetime/medium'],
86        'l11n_datetime_long'        => ['name' => 'l11n_datetime_long',        'type' => 'string', 'internal' => 'datetime/long'],
87        'l11n_datetime_very_long'   => ['name' => 'l11n_datetime_very_long',   'type' => 'string', 'internal' => 'datetime/very_long'],
88        'l11n_precision_very_short' => ['name' => 'l11n_precision_very_short', 'type' => 'int',    'internal' => 'precision/very_short'],
89        'l11n_precision_short'      => ['name' => 'l11n_precision_short',      'type' => 'int',    'internal' => 'precision/short'],
90        'l11n_precision_medium'     => ['name' => 'l11n_precision_medium',     'type' => 'int',    'internal' => 'precision/medium'],
91        'l11n_precision_long'       => ['name' => 'l11n_precision_long',       'type' => 'int',    'internal' => 'precision/long'],
92        'l11n_precision_very_long'  => ['name' => 'l11n_precision_very_long',  'type' => 'int',    'internal' => 'precision/very_long'],
93    ];
94
95    /**
96     * Has one relation.
97     *
98     * @var array<string, array{mapper:class-string, external:string, by?:string, column?:string, conditional?:bool}>
99     * @since 1.0.0
100     */
101    public const OWNS_ONE = [
102        'country'  => [
103            'mapper'            => CountryMapper::class,
104            'external'          => 'l11n_country',
105            'by'                => 'code2',
106            'column'            => 'code2',
107        ],
108        'language'    => [
109            'mapper'            => LanguageMapper::class,
110            'external'          => 'l11n_language',
111            'by'                => 'code2',
112            'column'            => 'code2',
113        ],
114        'currency'    => [
115            'mapper'            => CurrencyMapper::class,
116            'external'          => 'l11n_currency',
117            'by'                => 'code',
118            'column'            => 'code',
119        ],
120    ];
121
122    /**
123     * Primary table.
124     *
125     * @var string
126     * @since 1.0.0
127     */
128    public const TABLE = 'l11n';
129
130    /**
131     * Primary field name.
132     *
133     * @var string
134     * @since 1.0.0
135     */
136    public const PRIMARYFIELD = 'l11n_id';
137
138    /**
139     * Model to use by the mapper.
140     *
141     * @var class-string<T>
142     * @since 1.0.0
143     */
144    public const MODEL = Localization::class;
145}