Completed
Push — master ( 82ed2a...577910 )
by Aimeos
14:13
created

CustomerRemoveLostUserDataLaravel::migrate()   B

Complexity

Conditions 6
Paths 4

Size

Total Lines 25

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 25
rs 8.8977
c 0
b 0
f 0
cc 6
nc 4
nop 0
1
<?php
2
3
/**
4
 * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0
5
 * @copyright Aimeos (aimeos.org), 2018-2021
6
 */
7
8
9
namespace Aimeos\MW\Setup\Task;
10
11
12
/**
13
 * Removes address and list records without users entry
14
 */
15
class CustomerRemoveLostUserDataLaravel extends \Aimeos\MW\Setup\Task\Base
16
{
17
	private $sql = [
18
		'users_address' => [
19
			'fk_lvuad_pid' => 'DELETE FROM "users_address" WHERE NOT EXISTS ( SELECT "id" FROM "users" AS u WHERE "parentid"=u."id" )'
20
		],
21
		'users_list' => [
22
			'fk_lvuli_pid' => 'DELETE FROM "users_list" WHERE NOT EXISTS ( SELECT "id" FROM "users" AS u WHERE "parentid"=u."id" )'
23
		],
24
		'users_property' => [
25
			'fk_lvupr_pid' => 'DELETE FROM "users_property" WHERE NOT EXISTS ( SELECT "id" FROM "users" AS u WHERE "parentid"=u."id" )'
26
		],
27
	];
28
29
30
	/**
31
	 * Returns the list of task names which depends on this task.
32
	 *
33
	 * @return string[] List of task names
34
	 */
35
	public function getPostDependencies() : array
36
	{
37
		return ['TablesCreateMShop'];
38
	}
39
40
41
	/**
42
	 * Migrate database schema
43
	 */
44
	public function migrate()
45
	{
46
		$this->msg( 'Remove left over Laravel user references', 0, '' );
47
48
		$schema = $this->getSchema( 'db-customer' );
49
50
		foreach( $this->sql as $table => $map )
51
		{
52
			foreach( $map as $constraint => $sql )
53
			{
54
				$this->msg( sprintf( 'Remove records from %1$s', $table ), 1 );
55
56
				if( $schema->tableExists( 'fe_users' ) && $schema->tableExists( $table )
57
					&& $schema->constraintExists( $table, $constraint ) === false
58
				) {
59
					$this->execute( $sql, 'db-customer' );
60
					$this->status( 'done' );
61
				}
62
				else
63
				{
64
					$this->status( 'OK' );
65
				}
66
			}
67
		}
68
	}
69
}
70