mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-23 10:18:56 +02:00
Ensure that the PartKeepr Version is correct.
This commit is contained in:
parent
563d6bccd3
commit
ae438f1650
2 changed files with 30 additions and 0 deletions
|
@ -86,6 +86,12 @@ class ImportPartKeeprCommand extends Command
|
||||||
$xml = file_get_contents($input_path);
|
$xml = file_get_contents($input_path);
|
||||||
$data = $this->xml_converter->convertMySQLDumpXMLDataToArrayStructure($xml);
|
$data = $this->xml_converter->convertMySQLDumpXMLDataToArrayStructure($xml);
|
||||||
|
|
||||||
|
if (!$this->importHelper->checkVersion($data)) {
|
||||||
|
$db_version = $this->importHelper->getDatabaseSchemaVersion($data);
|
||||||
|
$io->error('The version of the imported database is not supported! (Version: '.$db_version.')');
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
//Import the mandatory data
|
//Import the mandatory data
|
||||||
$this->doImport($io, $data);
|
$this->doImport($io, $data);
|
||||||
|
|
||||||
|
|
|
@ -47,4 +47,28 @@ class PKImportHelper
|
||||||
$purger = new ResetAutoIncrementORMPurger($this->em, ['users', '"users"', 'groups', '"groups"', 'u2f_keys', 'internal', 'migration_versions']);
|
$purger = new ResetAutoIncrementORMPurger($this->em, ['users', '"users"', 'groups', '"groups"', 'u2f_keys', 'internal', 'migration_versions']);
|
||||||
$purger->purge();
|
$purger->purge();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extracts the current database schema version from the PartKeepr XML dump.
|
||||||
|
* @param array $data
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getDatabaseSchemaVersion(array $data): string
|
||||||
|
{
|
||||||
|
if (!isset($data['schemaversions'])) {
|
||||||
|
throw new \RuntimeException('Could not find schema version in XML dump!');
|
||||||
|
}
|
||||||
|
|
||||||
|
return end($data['schemaversions'])['version'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks that the database schema of the PartKeepr XML dump is compatible with the importer
|
||||||
|
* @param array $data
|
||||||
|
* @return bool True if the schema is compatible, false otherwise
|
||||||
|
*/
|
||||||
|
public function checkVersion(array $data): bool
|
||||||
|
{
|
||||||
|
return $this->getDatabaseSchemaVersion($data) === '20170601175559';
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue