51 lines
1.5 KiB
PHP
51 lines
1.5 KiB
PHP
<?php
|
|
function errorHandler($severity, $message, $file, $line) {
|
|
throw new ErrorException($message, 0, $severity, $file, $line);
|
|
}
|
|
|
|
// Set the custom error handler
|
|
set_error_handler('errorHandler');
|
|
/** @var \SQLite3 $db */
|
|
try {
|
|
require_once 'includes/connect_endpoint_crontabs.php';
|
|
} catch (Exception $e) {
|
|
require_once '../../includes/connect_endpoint.php';
|
|
} finally {
|
|
// Restore the default error handler
|
|
restore_error_handler();
|
|
}
|
|
|
|
|
|
$completedMigrations = [];
|
|
|
|
$migrationTableExists = $db
|
|
->query('SELECT name FROM sqlite_master WHERE type="table" AND name="migrations"')
|
|
->fetchArray(SQLITE3_ASSOC) !== false;
|
|
|
|
if ($migrationTableExists) {
|
|
$migrationQuery = $db->query('SELECT migration FROM migrations');
|
|
while ($row = $migrationQuery->fetchArray(SQLITE3_ASSOC)) {
|
|
$completedMigrations[] = $row['migration'];
|
|
}
|
|
}
|
|
|
|
$allMigrations = glob('migrations/*.php');
|
|
if (count($allMigrations) == 0) {
|
|
$allMigrations = glob('../../migrations/*.php');
|
|
}
|
|
$requiredMigrations = array_diff($allMigrations, $completedMigrations);
|
|
|
|
if (count($requiredMigrations) === 0) {
|
|
echo "No migrations to run.\n";
|
|
}
|
|
|
|
foreach ($requiredMigrations as $migration) {
|
|
require_once $migration;
|
|
|
|
$stmtInsert = $db->prepare('INSERT INTO migrations (migration) VALUES (:migration)');
|
|
$stmtInsert->bindParam(':migration', $migration, SQLITE3_TEXT);
|
|
$stmtInsert->execute();
|
|
|
|
echo sprintf("Migration %s completed successfully.\n", $migration);
|
|
}
|