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

MigrateDeploymentStatusTask   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 8
c 1
b 0
f 1
lcom 0
cbo 3
dl 0
loc 39
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
C run() 0 35 8
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