Example #1
0
    $logger->error($error['message'], $error);
    fwrite(STDERR, "В процессе инициализации произошла ошибка:\n{$error['message']}\n");
    exit(1);
});
$db->start();
if ($_SERVER['argc'] == 2) {
    $path = $_SERVER['argv']['1'];
    if (!is_dir($path)) {
        $path = Dearchiver::extract($container->getFileDirectory(), $path);
    }
    $directory = new Directory($path);
} else {
    $loader = $container->getUpdateLoader();
    $directory = $loader->load();
}
$oldVersionId = UpdateLogHelper::getLastVersionId($db);
$newVersionId = $directory->getVersionId();
if ($newVersionId != $oldVersionId + 1) {
    throw new \LogicException("Попытка обновления с версии {$oldVersionId} на версию {$newVersionId}.");
}
$db->execute('SET CONSTRAINTS "address_objects_parent_id_fkey", "houses_parent_id_fkey" DEFERRED');
$housesConfig = $container->getHousesImportConfig();
$addressObjectsConfig = $container->getAddressObjectsImportConfig();
$deletedHouseFile = $directory->getDeletedHouseFile();
if ($deletedHouseFile && $housesConfig) {
    $houseRemover = new Remover($db, $housesConfig['table_name'], $housesConfig['xml_key'], $housesConfig['database_key']);
    $houseRemover->remove(new XmlReader($deletedHouseFile, $housesConfig['node_name'], [$housesConfig['primary_key']], []));
}
$deletedAddressObjectsFile = $directory->getDeletedAddressObjectFile();
if ($deletedAddressObjectsFile) {
    $addressObjectsRemover = new Remover($db, $addressObjectsConfig['table_name'], $addressObjectsConfig['xml_key'], $addressObjectsConfig['database_key']);
Example #2
0
 public function testGetLastVersionId()
 {
     $values = [[12], [18], [180]];
     $this->db->execute('INSERT INTO update_log(version_id) VALUES ?v', [$values]);
     $this->assertEquals(180, UpdateLogHelper::getLastVersionId($this->db));
 }