for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
class MigrateDeploymentStatusTask extends BuildTask {
public function run($request) {
$log = function($message) {
$message = sprintf('[%s] ', date('Y-m-d H:i:s')) . $message;
echo $message . PHP_EOL;
};
if (!Director::is_cli()) {
$log('This command can only run via CLI');
return;
}
foreach (DB::query('SELECT "ID", "Status" FROM "DNDeployment"') as $record) {
// This record looks to be already migrated
if (empty($record['Status'])) {
continue;
if ($record['Status'] === 'Queued') {
DB::query(sprintf('UPDATE "DNDeployment" SET "State" = \'Queued\' WHERE "ID" = %s', $record['ID']));
} elseif ($record['Status'] === 'Started') {
DB::query(sprintf('UPDATE "DNDeployment" SET "State" = \'Deploying\' WHERE "ID" = %s', $record['ID']));
} elseif ($record['Status'] === 'Finished') {
DB::query(sprintf('UPDATE "DNDeployment" SET "State" = \'Completed\' WHERE "ID" = %s', $record['ID']));
} elseif ($record['Status'] === 'Failed') {
DB::query(sprintf('UPDATE "DNDeployment" SET "State" = \'Failed\' WHERE "ID" = %s', $record['ID']));
// Blank out the old column, as it has been successfully migrated.
DB::query(sprintf('UPDATE "DNDeployment" SET "Status" = NULL WHERE "ID" = %s', $record['ID']));
$log(sprintf('DNDeployment record %s has been successfully migrated', $record['ID']));
$log('Finished. Please delete the DNDeployment.Status column from the database');