type fixes
This commit is contained in:
@@ -54,23 +54,40 @@ class Converter
|
||||
|
||||
private $relationManager;
|
||||
|
||||
private $entityDefs;
|
||||
/**
|
||||
* @var ?array<string,mixed>
|
||||
*/
|
||||
private $entityDefs = null;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $defaultFieldType = 'varchar';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $defaultNaming = 'postfix';
|
||||
|
||||
/**
|
||||
* @var array<string,int>
|
||||
*/
|
||||
protected $defaultLength = [
|
||||
'varchar' => 255,
|
||||
'int' => 11,
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array<string,mixed>
|
||||
*/
|
||||
protected $defaultValue = [
|
||||
'bool' => false,
|
||||
];
|
||||
|
||||
/**
|
||||
* params mapping: entityDefs => ORM
|
||||
* Mapping entityDefs => ORM.
|
||||
*
|
||||
* @var array<string,mixed>
|
||||
*/
|
||||
protected $fieldAccordances = [
|
||||
'type' => 'type',
|
||||
@@ -95,6 +112,9 @@ class Converter
|
||||
'dependeeAttributeList' => 'dependeeAttributeList',
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array<string,mixed>
|
||||
*/
|
||||
protected $idParams = [
|
||||
'dbType' => 'varchar',
|
||||
'len' => 24,
|
||||
@@ -102,6 +122,8 @@ class Converter
|
||||
|
||||
/**
|
||||
* Permitted entityDefs parameters which will be copied to ormMetadata.
|
||||
*
|
||||
* @var string[]
|
||||
*/
|
||||
protected $permittedEntityOptions = [
|
||||
'indexes',
|
||||
@@ -131,7 +153,8 @@ class Converter
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @param bool $reload
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function getEntityDefs($reload = false)
|
||||
{
|
||||
@@ -164,6 +187,8 @@ class Converter
|
||||
|
||||
/**
|
||||
* Covert metadata > entityDefs to ORM metadata.
|
||||
*
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
public function process(): array
|
||||
{
|
||||
@@ -198,6 +223,10 @@ class Converter
|
||||
return $ormMetadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string,mixed> $entityMetadata
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function convertEntity(string $entityType, array $entityMetadata): array
|
||||
{
|
||||
$ormMetadata = [];
|
||||
@@ -248,6 +277,10 @@ class Converter
|
||||
return $ormMetadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string,mixed> $ormMetadata
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function afterFieldsProcess(array $ormMetadata): array
|
||||
{
|
||||
foreach ($ormMetadata as $entityType => &$entityParams) {
|
||||
@@ -309,6 +342,10 @@ class Converter
|
||||
return $ormMetadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string,mixed> $ormMetadata
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function afterProcess(array $ormMetadata): array
|
||||
{
|
||||
foreach ($ormMetadata as $entityType => &$entityParams) {
|
||||
@@ -328,6 +365,9 @@ class Converter
|
||||
return $ormMetadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string,mixed> $data
|
||||
*/
|
||||
protected function obtainForeignType(array $data, string $entityType, string $attribute): ?string
|
||||
{
|
||||
$params = $data[$entityType]['fields'][$attribute] ?? [];
|
||||
@@ -352,6 +392,10 @@ class Converter
|
||||
return $foreignParams['type'] ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string,mixed> $entityMetadata
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function convertFields(string $entityType, array &$entityMetadata): array
|
||||
{
|
||||
// List of unmerged fields with default field definitions in $output.
|
||||
@@ -421,6 +465,9 @@ class Converter
|
||||
|
||||
/**
|
||||
* Correct fields definitions based on Espo\Custom\Core\Utils\Database\Orm\Fields.
|
||||
*
|
||||
* @param array<string,mixed> $ormMetadata
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function correctFields(string $entityType, array $ormMetadata): array
|
||||
{
|
||||
@@ -513,6 +560,11 @@ class Converter
|
||||
return $ormMetadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string,mixed> $attributeParams
|
||||
* @param ?array<string,mixed> $fieldTypeMetadata
|
||||
* @return array<string,mixed>|false
|
||||
*/
|
||||
protected function convertField(
|
||||
string $entityType,
|
||||
string $attribute,
|
||||
@@ -559,6 +611,11 @@ class Converter
|
||||
return $fieldDefs;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string,mixed> $entityMetadata
|
||||
* @param array<string,mixed> $ormMetadata
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function convertLinks(string $entityType, array $entityMetadata, array $ormMetadata): array
|
||||
{
|
||||
if (!isset($entityMetadata['links'])) {
|
||||
@@ -582,6 +639,10 @@ class Converter
|
||||
return $relationships;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string,mixed> $attributeParams
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function getInitValues(array $attributeParams)
|
||||
{
|
||||
$values = [];
|
||||
@@ -617,6 +678,10 @@ class Converter
|
||||
return $values;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string,mixed> $ormMetadata
|
||||
* @return void
|
||||
*/
|
||||
protected function applyFullTextSearch(array &$ormMetadata, string $entityType)
|
||||
{
|
||||
if (!$this->getDatabaseHelper()->doesTableSupportFulltext(Util::toUnderScore($entityType))) {
|
||||
@@ -682,6 +747,11 @@ class Converter
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string,mixed> $ormMetadata
|
||||
* @param string $entityType
|
||||
* @return void
|
||||
*/
|
||||
protected function applyIndexes(&$ormMetadata, $entityType)
|
||||
{
|
||||
if (isset($ormMetadata[$entityType]['fields'])) {
|
||||
@@ -715,6 +785,10 @@ class Converter
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string,mixed> $defs
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function createAdditionalEntityTypes(string $entityType, array $defs): array
|
||||
{
|
||||
if (empty($defs['additionalTables'])) {
|
||||
@@ -726,6 +800,10 @@ class Converter
|
||||
return $additionalDefs;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string,mixed> $defs
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function createRelationsEntityDefs(string $entityType, array $defs): array
|
||||
{
|
||||
$result = [];
|
||||
|
||||
@@ -32,11 +32,11 @@ namespace Espo\Core\Utils\Database\Orm\Fields;
|
||||
class Base extends \Espo\Core\Utils\Database\Orm\Base
|
||||
{
|
||||
/**
|
||||
* Start process Orm converting for fields.
|
||||
* ORM conversion for fields.
|
||||
*
|
||||
* @param string $itemName Field name
|
||||
* @param string $itemName A field name.
|
||||
* @param string $entityName
|
||||
* @return array
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
public function process($itemName, $entityName)
|
||||
{
|
||||
@@ -55,8 +55,13 @@ class Base extends \Espo\Core\Utils\Database\Orm\Base
|
||||
return $convertedDefs;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $fieldName
|
||||
* @param string $entityType
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function load($fieldName, $entityType)
|
||||
{
|
||||
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,11 @@ namespace Espo\Core\Utils\Database\Orm\Fields;
|
||||
|
||||
class Currency extends Base
|
||||
{
|
||||
/**
|
||||
* @param string $fieldName
|
||||
* @param string $entityType
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function load($fieldName, $entityType)
|
||||
{
|
||||
$alias = $fieldName . 'CurrencyRate';
|
||||
|
||||
@@ -31,6 +31,11 @@ namespace Espo\Core\Utils\Database\Orm\Fields;
|
||||
|
||||
class Email extends Base
|
||||
{
|
||||
/**
|
||||
* @param string $fieldName
|
||||
* @param string $entityType
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function load($fieldName, $entityType)
|
||||
{
|
||||
$foreignJoinAlias = "{$fieldName}{$entityType}{alias}Foreign";
|
||||
|
||||
@@ -31,6 +31,11 @@ namespace Espo\Core\Utils\Database\Orm\Fields;
|
||||
|
||||
class File extends Base
|
||||
{
|
||||
/**
|
||||
* @param string $fieldName
|
||||
* @param string $entityName
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function load($fieldName, $entityName)
|
||||
{
|
||||
$fieldParams = $this->getFieldParams();
|
||||
@@ -58,8 +63,12 @@ class File extends Base
|
||||
$data[$entityName]['fields'][$fieldName.'Name']['type'] = 'varchar';
|
||||
}
|
||||
|
||||
if (!empty($fieldParams['defaultAttributes']) && array_key_exists($fieldName.'Id', $fieldParams['defaultAttributes'])) {
|
||||
$data[$entityName]['fields'][$fieldName.'Id']['default'] = $fieldParams['defaultAttributes'][$fieldName.'Id'];
|
||||
if (
|
||||
!empty($fieldParams['defaultAttributes']) &&
|
||||
array_key_exists($fieldName.'Id', $fieldParams['defaultAttributes'])
|
||||
) {
|
||||
$data[$entityName]['fields'][$fieldName.'Id']['default'] =
|
||||
$fieldParams['defaultAttributes'][$fieldName.'Id'];
|
||||
}
|
||||
|
||||
if (empty($fieldParams['notStorable'])) {
|
||||
@@ -67,16 +76,16 @@ class File extends Base
|
||||
$data[$entityName]['fields'][$fieldName . 'Name']['foreign'] = 'name';
|
||||
|
||||
$linkName = $fieldName;
|
||||
$data[$entityName]['relations'] = array();
|
||||
$data[$entityName]['relations'][$linkName] = array(
|
||||
$data[$entityName]['relations'] = [];
|
||||
$data[$entityName]['relations'][$linkName] = [
|
||||
'type' => 'belongsTo',
|
||||
'entity' => 'Attachment',
|
||||
'key' => $linkName.'Id',
|
||||
'foreignKey' => 'id',
|
||||
'foreign' => null
|
||||
);
|
||||
'foreign' => null,
|
||||
];
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,11 @@ namespace Espo\Core\Utils\Database\Orm\Fields;
|
||||
|
||||
class Link extends Base
|
||||
{
|
||||
/**
|
||||
* @param string $fieldName
|
||||
* @param string $entityName
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function load($fieldName, $entityName)
|
||||
{
|
||||
$fieldParams = $this->getFieldParams();
|
||||
@@ -63,8 +68,12 @@ class Link extends Base
|
||||
$data[$entityName]['fields'][$fieldName.'Id']['notStorable'] = true;
|
||||
}
|
||||
|
||||
if (!empty($fieldParams['defaultAttributes']) && array_key_exists($fieldName.'Id', $fieldParams['defaultAttributes'])) {
|
||||
$data[$entityName]['fields'][$fieldName.'Id']['default'] = $fieldParams['defaultAttributes'][$fieldName.'Id'];
|
||||
if (
|
||||
!empty($fieldParams['defaultAttributes']) &&
|
||||
array_key_exists($fieldName.'Id', $fieldParams['defaultAttributes'])
|
||||
) {
|
||||
$data[$entityName]['fields'][$fieldName.'Id']['default'] =
|
||||
$fieldParams['defaultAttributes'][$fieldName.'Id'];
|
||||
}
|
||||
|
||||
return $data;
|
||||
|
||||
@@ -31,6 +31,11 @@ namespace Espo\Core\Utils\Database\Orm\Fields;
|
||||
|
||||
class LinkMultiple extends Base
|
||||
{
|
||||
/**
|
||||
* @param string $fieldName
|
||||
* @param string $entityName
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function load($fieldName, $entityName)
|
||||
{
|
||||
$data = [
|
||||
@@ -65,12 +70,14 @@ class LinkMultiple extends Base
|
||||
|
||||
if (array_key_exists('orderBy', $fieldParams)) {
|
||||
$data[$entityName]['fields'][$fieldName . 'Ids']['orderBy'] = $fieldParams['orderBy'];
|
||||
|
||||
if (array_key_exists('orderDirection', $fieldParams)) {
|
||||
$data[$entityName]['fields'][$fieldName . 'Ids']['orderDirection'] = $fieldParams['orderDirection'];
|
||||
}
|
||||
}
|
||||
|
||||
$columns = $this->getMetadata()->get("entityDefs.{$entityName}.fields.{$fieldName}.columns");
|
||||
|
||||
if (!empty($columns)) {
|
||||
$data[$entityName]['fields'][$fieldName . 'Columns'] = [
|
||||
'type' => 'jsonObject',
|
||||
|
||||
@@ -31,6 +31,11 @@ namespace Espo\Core\Utils\Database\Orm\Fields;
|
||||
|
||||
class LinkOne extends Base
|
||||
{
|
||||
/**
|
||||
* @param string $fieldName
|
||||
* @param string $entityType
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function load($fieldName, $entityType)
|
||||
{
|
||||
$fieldParams = $this->getFieldParams();
|
||||
|
||||
@@ -31,6 +31,11 @@ namespace Espo\Core\Utils\Database\Orm\Fields;
|
||||
|
||||
class LinkParent extends Base
|
||||
{
|
||||
/**
|
||||
* @param string $fieldName
|
||||
* @param string $entityName
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function load($fieldName, $entityName)
|
||||
{
|
||||
$data = [
|
||||
@@ -69,11 +74,20 @@ class LinkParent extends Base
|
||||
|
||||
$fieldParams = $this->getFieldParams();
|
||||
|
||||
if (!empty($fieldParams['defaultAttributes']) && array_key_exists($fieldName.'Id', $fieldParams['defaultAttributes'])) {
|
||||
$data[$entityName]['fields'][$fieldName.'Id']['default'] = $fieldParams['defaultAttributes'][$fieldName.'Id'];
|
||||
if (
|
||||
!empty($fieldParams['defaultAttributes']) &&
|
||||
array_key_exists($fieldName.'Id', $fieldParams['defaultAttributes'])
|
||||
) {
|
||||
$data[$entityName]['fields'][$fieldName.'Id']['default'] =
|
||||
$fieldParams['defaultAttributes'][$fieldName.'Id'];
|
||||
}
|
||||
if (!empty($fieldParams['defaultAttributes']) && array_key_exists($fieldName.'Type', $fieldParams['defaultAttributes'])) {
|
||||
$data[$entityName]['fields'][$fieldName.'Type']['default'] = $fieldParams['defaultAttributes'][$fieldName.'Type'];
|
||||
|
||||
if (
|
||||
!empty($fieldParams['defaultAttributes']) &&
|
||||
array_key_exists($fieldName.'Type', $fieldParams['defaultAttributes'])
|
||||
) {
|
||||
$data[$entityName]['fields'][$fieldName.'Type']['default'] =
|
||||
$fieldParams['defaultAttributes'][$fieldName.'Type'];
|
||||
}
|
||||
|
||||
return $data;
|
||||
|
||||
@@ -31,6 +31,11 @@ namespace Espo\Core\Utils\Database\Orm\Fields;
|
||||
|
||||
class PersonName extends Base
|
||||
{
|
||||
/**
|
||||
* @param string $fieldName
|
||||
* @param string $entityType
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function load($fieldName, $entityType)
|
||||
{
|
||||
$format = $this->config->get('personNameFormat');
|
||||
@@ -73,6 +78,7 @@ class PersonName extends Base
|
||||
|
||||
if (empty($fieldNameTrimmed)) {
|
||||
$fullList[] = "'" . $subFieldName . "'";
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -172,10 +178,12 @@ class PersonName extends Base
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string[] $fullList
|
||||
*/
|
||||
protected function getSelect(array $fullList, ?string $alias = null): string
|
||||
{
|
||||
foreach ($fullList as &$item) {
|
||||
|
||||
$rowItem = trim($item, " '");
|
||||
|
||||
if (empty($rowItem)) {
|
||||
|
||||
@@ -31,6 +31,11 @@ namespace Espo\Core\Utils\Database\Orm\Fields;
|
||||
|
||||
class Phone extends Base
|
||||
{
|
||||
/**
|
||||
* @param string $fieldName
|
||||
* @param string $entityType
|
||||
* @return array<string,mixed>
|
||||
*/
|
||||
protected function load($fieldName, $entityType)
|
||||
{
|
||||
$foreignJoinAlias = "{$fieldName}{$entityType}{alias}Foreign";
|
||||
|
||||
Reference in New Issue
Block a user