Completed
Pull Request — master (#586)
by Sean
03:23
created

MigrateDeploymentStatusTask::run()   C

Complexity

Conditions 8
Paths 8

Size

Total Lines 35
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 35
rs 5.3846
cc 8
eloc 21
nc 8
nop 1
1
<?php
2
3
class MigrateDeploymentStatusTask extends BuildTask {
4
5
	public function run($request) {
6
		$log = function($message) {
7
			$message = sprintf('[%s] ', date('Y-m-d H:i:s')) . $message;
8
			echo $message . PHP_EOL;
9
		};
10
11
		if (!Director::is_cli()) {
12
			$log('This command can only run via CLI');
13
			return;
14
		}
15
16
		foreach (DB::query('SELECT "ID", "Status", "State" FROM "DNDeployment"') as $record) {
17
			// This record looks to be already migrated
18
			if (empty($record['Status'])) {
19
				continue;
20
			}
21
22
			if ($record['Status'] === 'Queued') {
23
				DB::query(sprintf('UPDATE "DNDeployment" SET "State" = \'Queued\' WHERE "ID" = %s', $record['ID']));
24
			} elseif ($record['Status'] === 'Started') {
25
				DB::query(sprintf('UPDATE "DNDeployment" SET "State" = \'Deploying\' WHERE "ID" = %s', $record['ID']));
26
			} elseif ($record['Status'] === 'Finished') {
27
				DB::query(sprintf('UPDATE "DNDeployment" SET "State" = \'Completed\' WHERE "ID" = %s', $record['ID']));
28
			} elseif ($record['Status'] === 'Failed') {
29
				DB::query(sprintf('UPDATE "DNDeployment" SET "State" = \'Failed\' WHERE "ID" = %s', $record['ID']));
30
			}
31
32
			// Blank out the old column, as it has been successfully migrated.
33
			DB::query(sprintf('UPDATE "DNDeployment" SET "Status" = NULL WHERE "ID" = %s', $record['ID']));
34
35
			$log(sprintf('DNDeployment record %s has been successfully migrated', $record['ID']));
36
		}
37
38
		$log('Finished. Please delete the DNDeployment.Status column from the database');
39
	}
40
41
}
42