2018-01-03 22:21:26 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Migration script
|
|
|
|
*/
|
|
|
|
|
2018-05-16 18:18:30 +00:00
|
|
|
use Misuzu\Database;
|
|
|
|
use Misuzu\DatabaseMigrationManager;
|
2018-01-03 22:21:26 +00:00
|
|
|
|
|
|
|
require_once __DIR__ . '/misuzu.php';
|
|
|
|
|
2018-05-16 18:18:30 +00:00
|
|
|
define('MSZ_MIGRATABLE_DATABASES', [
|
|
|
|
'mysql-test' => __DIR__ . '/database',
|
|
|
|
]);
|
|
|
|
|
|
|
|
function migrate_log($log): void
|
|
|
|
{
|
|
|
|
echo $log . PHP_EOL;
|
|
|
|
}
|
2018-01-03 22:21:26 +00:00
|
|
|
|
2018-05-16 18:18:30 +00:00
|
|
|
if (PHP_SAPI !== 'cli') {
|
|
|
|
migrate_log('This can only be run from a CLI, if you can access this from a web browser your configuration is bad.');
|
|
|
|
exit;
|
2018-01-03 22:21:26 +00:00
|
|
|
}
|
|
|
|
|
2018-05-16 18:18:30 +00:00
|
|
|
$migrateTargets = MSZ_MIGRATABLE_DATABASES;
|
|
|
|
|
|
|
|
$doRollback = isset($argv[1]) && $argv[1] === 'rollback';
|
|
|
|
$targetDb = isset($argv[$doRollback ? 2 : 1]) ? $argv[$doRollback ? 2 : 1] : null;
|
|
|
|
|
|
|
|
if ($targetDb !== null) {
|
|
|
|
if (array_key_exists($targetDb, $migrateTargets)) {
|
|
|
|
$migrateTargets = [$targetDb => $migrateTargets[$targetDb]];
|
|
|
|
} else {
|
|
|
|
migrate_log('Invalid target database connection.');
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
foreach ($migrateTargets as $db => $path) {
|
|
|
|
migrate_log("Creating migration manager for '{$db}'...");
|
|
|
|
$migrationManager = new DatabaseMigrationManager(Database::connection($db), $path);
|
|
|
|
$migrationManager->setLogger('migrate_log');
|
|
|
|
|
|
|
|
if ($doRollback) {
|
|
|
|
migrate_log("Rolling back last migrations for '{$db}'...");
|
|
|
|
$migrationManager->rollback();
|
|
|
|
} else {
|
|
|
|
migrate_log("Running migrations for '{$db}'...");
|
|
|
|
$migrationManager->migrate();
|
|
|
|
}
|
|
|
|
|
|
|
|
$errors = $migrationManager->getErrors();
|
|
|
|
$errorCount = count($errors);
|
|
|
|
|
|
|
|
if ($errorCount < 1) {
|
|
|
|
migrate_log('Completed with no errors!');
|
|
|
|
} else {
|
|
|
|
migrate_log(PHP_EOL . "There were {$errorCount} errors during the migrations...");
|
2018-01-03 22:21:26 +00:00
|
|
|
|
2018-05-16 18:18:30 +00:00
|
|
|
foreach ($errors as $error) {
|
|
|
|
migrate_log($error);
|
|
|
|
}
|
|
|
|
}
|
2018-01-03 22:21:26 +00:00
|
|
|
}
|