-
Notifications
You must be signed in to change notification settings - Fork 159
Expand file tree
/
Copy pathDBData.php
More file actions
56 lines (42 loc) · 1.61 KB
/
DBData.php
File metadata and controls
56 lines (42 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php namespace DBDiff\DB\Data;
use DBDiff\Params\ParamsFactory;
use DBDiff\Diff\SetDBCollation;
use DBDiff\Exceptions\DataException;
use DBDiff\Logger;
class DBData {
function __construct($manager) {
$this->manager = $manager;
}
function getDiff() {
$params = ParamsFactory::get();
$diffSequence = [];
// Tables
$tableData = new TableData($this->manager);
$sourceTables = $this->manager->getTables('source');
$targetTables = $this->manager->getTables('target');
if (isset($params->tablesToIgnore)) {
$sourceTables = array_diff($sourceTables, $params->tablesToIgnore);
$targetTables = array_diff($targetTables, $params->tablesToIgnore);
}
$commonTables = array_intersect($sourceTables, $targetTables);
foreach ($commonTables as $table) {
try {
$diffs = $tableData->getDiff($table);
$diffSequence = array_merge($diffSequence, $diffs);
} catch (DataException $e) {
Logger::error($e->getMessage());
}
}
$addedTables = array_diff($sourceTables, $targetTables);
foreach ($addedTables as $table) {
$diffs = $tableData->getNewData($table);
$diffSequence = array_merge($diffSequence, $diffs);
}
$deletedTables = array_diff($targetTables, $sourceTables);
foreach ($deletedTables as $table) {
$diffs = $tableData->getOldData($table);
$diffSequence = array_merge($diffSequence, $diffs);
}
return $diffSequence;
}
}