include suggested changes

This commit is contained in:
Philipp 2022-07-13 00:23:12 +02:00
parent 6ef609f4fb
commit d74e57ef2c
No known key found for this signature in database
GPG key ID: 24A7501396EB5432
18 changed files with 64 additions and 67 deletions

View file

@ -142,6 +142,7 @@ class DBStructure
* Print out database error messages
*
* @param string $message Message to be added to the error message
*
* @return string Error message
*/
private static function printUpdateError(string $message): string
@ -155,6 +156,7 @@ class DBStructure
/**
* Perform a database structure dryrun (means: just simulating)
*
* @return string Empty string if the update is successful, error messages otherwise
* @throws Exception
*/
public static function dryRun(): string
@ -513,28 +515,28 @@ class DBStructure
$fields = DBA::selectToArray('INFORMATION_SCHEMA.COLUMNS',
['COLUMN_NAME', 'COLUMN_TYPE', 'IS_NULLABLE', 'COLUMN_DEFAULT', 'EXTRA',
'COLUMN_KEY', 'COLLATION_NAME', 'COLUMN_COMMENT'],
'COLUMN_KEY', 'COLLATION_NAME', 'COLUMN_COMMENT'],
["`TABLE_SCHEMA` = ? AND `TABLE_NAME` = ?",
DBA::databaseName(), $table]);
DBA::databaseName(), $table]);
$foreign_keys = DBA::selectToArray('INFORMATION_SCHEMA.KEY_COLUMN_USAGE',
['COLUMN_NAME', 'CONSTRAINT_NAME', 'REFERENCED_TABLE_NAME', 'REFERENCED_COLUMN_NAME'],
["`TABLE_SCHEMA` = ? AND `TABLE_NAME` = ? AND `REFERENCED_TABLE_SCHEMA` IS NOT NULL",
DBA::databaseName(), $table]);
DBA::databaseName(), $table]);
$table_status = DBA::selectFirst('INFORMATION_SCHEMA.TABLES',
['ENGINE', 'TABLE_COLLATION', 'TABLE_COMMENT'],
["`TABLE_SCHEMA` = ? AND `TABLE_NAME` = ?",
DBA::databaseName(), $table]);
DBA::databaseName(), $table]);
$fielddata = [];
$indexdata = [];
$fielddata = [];
$indexdata = [];
$foreigndata = [];
if (DBA::isResult($foreign_keys)) {
foreach ($foreign_keys as $foreign_key) {
$parameters = ['foreign' => [$foreign_key['REFERENCED_TABLE_NAME'] => $foreign_key['REFERENCED_COLUMN_NAME']]];
$constraint = self::getConstraintName($table, $foreign_key['COLUMN_NAME'], $parameters);
$parameters = ['foreign' => [$foreign_key['REFERENCED_TABLE_NAME'] => $foreign_key['REFERENCED_COLUMN_NAME']]];
$constraint = self::getConstraintName($table, $foreign_key['COLUMN_NAME'], $parameters);
$foreigndata[$constraint] = $foreign_key;
}
}
@ -562,8 +564,8 @@ class DBStructure
$fielddata = [];
if (DBA::isResult($fields)) {
foreach ($fields as $field) {
$search = ['tinyint(1)', 'tinyint(3) unsigned', 'tinyint(4)', 'smallint(5) unsigned', 'smallint(6)', 'mediumint(8) unsigned', 'mediumint(9)', 'bigint(20)', 'int(10) unsigned', 'int(11)'];
$replace = ['boolean', 'tinyint unsigned', 'tinyint', 'smallint unsigned', 'smallint', 'mediumint unsigned', 'mediumint', 'bigint', 'int unsigned', 'int'];
$search = ['tinyint(1)', 'tinyint(3) unsigned', 'tinyint(4)', 'smallint(5) unsigned', 'smallint(6)', 'mediumint(8) unsigned', 'mediumint(9)', 'bigint(20)', 'int(10) unsigned', 'int(11)'];
$replace = ['boolean', 'tinyint unsigned', 'tinyint', 'smallint unsigned', 'smallint', 'mediumint unsigned', 'mediumint', 'bigint', 'int unsigned', 'int'];
$field['COLUMN_TYPE'] = str_replace($search, $replace, $field['COLUMN_TYPE']);
$fielddata[$field['COLUMN_NAME']]['type'] = $field['COLUMN_TYPE'];
@ -585,13 +587,13 @@ class DBStructure
}
$fielddata[$field['COLUMN_NAME']]['Collation'] = $field['COLLATION_NAME'];
$fielddata[$field['COLUMN_NAME']]['comment'] = $field['COLUMN_COMMENT'];
$fielddata[$field['COLUMN_NAME']]['comment'] = $field['COLUMN_COMMENT'];
}
}
return [
'fields' => $fielddata,
'indexes' => $indexdata,
'fields' => $fielddata,
'indexes' => $indexdata,
'foreign_keys' => $foreigndata,
'table_status' => $table_status
];
@ -722,7 +724,7 @@ class DBStructure
{
return DBA::exists('INFORMATION_SCHEMA.KEY_COLUMN_USAGE',
["`TABLE_SCHEMA` = ? AND `TABLE_NAME` = ? AND `COLUMN_NAME` = ? AND `REFERENCED_TABLE_SCHEMA` IS NOT NULL",
DBA::databaseName(), $table, $field]);
DBA::databaseName(), $table, $field]);
}
/**
@ -795,8 +797,8 @@ class DBStructure
if (self::existsTable('user') && !DBA::exists('user', ['uid' => 0])) {
$user = [
'verified' => true,
'page-flags' => User::PAGE_FLAGS_SOAPBOX,
'verified' => true,
'page-flags' => User::PAGE_FLAGS_SOAPBOX,
'account-type' => User::ACCOUNT_TYPE_RELAY,
];
DBA::insert('user', $user);
@ -872,7 +874,7 @@ class DBStructure
$permission = '';
}
$fields = ['id' => $set['psid'], 'uid' => $set['uid'], 'allow_cid' => $permission,
'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => ''];
'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => ''];
DBA::insert('permissionset', $fields);
}
DBA::close($sets);
@ -902,7 +904,7 @@ class DBStructure
$isUpdate = false;
$processes = DBA::select('information_schema.processlist', ['info'], [
'db' => DBA::databaseName(),
'db' => DBA::databaseName(),
'command' => ['Query', 'Execute']
]);

View file

@ -61,13 +61,14 @@ class DbaDefinition
}
/**
* Get field data for the given table
* Truncate field data for the given table
*
* @param string $table Name of the table to load field definitions for
* @param array $data data fields
*
* @param string $table Tavle to load field definitions for
* @param array $data data fields
* @return array fields for the given
*/
public function getFieldsForTable(string $table, array $data = []): array
public function truncateFieldsForTable(string $table, array $data): array
{
$definition = $this->definition;
if (empty($definition[$table])) {