Extract common code

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>
This commit is contained in:
Kamil Tekiela 2023-12-18 22:19:17 +01:00
parent f3be6efd8c
commit c028d421d7

View File

@ -234,36 +234,7 @@ class Designer
): string {
$GLOBALS['text_dir'] ??= null;
$columnsType = [];
foreach ($tableColumnsInfo as $tableName => $columnsInfo) {
foreach ($columnsInfo as $columnInfo) {
$tableColumnName = $tableName . '.' . $columnInfo->name;
if (isset($tablesPkOrUniqueKeys[$tableColumnName])) {
$columnsType[$tableColumnName] = 'designer/FieldKey_small';
} else {
$columnsType[$tableColumnName] = 'designer/Field_small';
if (
str_contains($columnInfo->type, 'char')
|| str_contains($columnInfo->type, 'text')
) {
$columnsType[$tableColumnName] .= '_char';
} elseif (
str_contains($columnInfo->type, 'int')
|| str_contains($columnInfo->type, 'float')
|| str_contains($columnInfo->type, 'double')
|| str_contains($columnInfo->type, 'decimal')
) {
$columnsType[$tableColumnName] .= '_int';
} elseif (
str_contains($columnInfo->type, 'date')
|| str_contains($columnInfo->type, 'time')
|| str_contains($columnInfo->type, 'year')
) {
$columnsType[$tableColumnName] .= '_date';
}
}
}
}
$columnsType = $this->getColumnTypes($tableColumnsInfo, $tablesPkOrUniqueKeys);
return $this->template->render('database/designer/database_tables', [
'db' => Current::$database,
@ -319,36 +290,7 @@ class Designer
$GLOBALS['text_dir'] ??= null;
$relationParameters = $this->relation->getRelationParameters();
$columnsType = [];
foreach ($tableColumnsInfo as $tableName => $columnsInfo) {
foreach ($columnsInfo as $columnInfo) {
$tableColumnName = $tableName . '.' . $columnInfo->name;
if (isset($tablesPkOrUniqueKeys[$tableColumnName])) {
$columnsType[$tableColumnName] = 'designer/FieldKey_small';
} else {
$columnsType[$tableColumnName] = 'designer/Field_small';
if (
str_contains($columnInfo->type, 'char')
|| str_contains($columnInfo->type, 'text')
) {
$columnsType[$tableColumnName] .= '_char';
} elseif (
str_contains($columnInfo->type, 'int')
|| str_contains($columnInfo->type, 'float')
|| str_contains($columnInfo->type, 'double')
|| str_contains($columnInfo->type, 'decimal')
) {
$columnsType[$tableColumnName] .= '_int';
} elseif (
str_contains($columnInfo->type, 'date')
|| str_contains($columnInfo->type, 'time')
|| str_contains($columnInfo->type, 'year')
) {
$columnsType[$tableColumnName] .= '_date';
}
}
}
}
$columnsType = $this->getColumnTypes($tableColumnsInfo, $tablesPkOrUniqueKeys);
$displayedFields = [];
foreach ($scriptDisplayField as $designerTable) {
@ -386,4 +328,46 @@ class Designer
'columns_type' => $columnsType,
]);
}
/**
* @param list<ColumnInfo>[] $tableColumnsInfo table column info
* @param mixed[] $tablesPkOrUniqueKeys unique or primary indices
*
* @return array<string, string>
*/
private function getColumnTypes(array $tableColumnsInfo, array $tablesPkOrUniqueKeys): array
{
$columnsType = [];
foreach ($tableColumnsInfo as $tableName => $columnsInfo) {
foreach ($columnsInfo as $columnInfo) {
$tableColumnName = $tableName . '.' . $columnInfo->name;
if (isset($tablesPkOrUniqueKeys[$tableColumnName])) {
$columnsType[$tableColumnName] = 'designer/FieldKey_small';
} else {
$columnsType[$tableColumnName] = 'designer/Field_small';
if (
str_contains($columnInfo->type, 'char')
|| str_contains($columnInfo->type, 'text')
) {
$columnsType[$tableColumnName] .= '_char';
} elseif (
str_contains($columnInfo->type, 'int')
|| str_contains($columnInfo->type, 'float')
|| str_contains($columnInfo->type, 'double')
|| str_contains($columnInfo->type, 'decimal')
) {
$columnsType[$tableColumnName] .= '_int';
} elseif (
str_contains($columnInfo->type, 'date')
|| str_contains($columnInfo->type, 'time')
|| str_contains($columnInfo->type, 'year')
) {
$columnsType[$tableColumnName] .= '_date';
}
}
}
}
return $columnsType;
}
}