Passed
Push — master ( e9dd98...02cf1a )
by Richard
01:44
created

Database::checkIfUpdateWorked()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
c 0
b 0
f 0
nc 2
nop 1
dl 0
loc 4
rs 10
1
<?php
2
namespace Maphper\DataSource;
3
class Database implements \Maphper\DataSource {
4
	const EDIT_STRUCTURE = 1;
5
	const EDIT_INDEX = 2;
6
	const EDIT_OPTIMISE = 4;
7
8
	private $primaryKey;
9
	private $fields = '*';
10
    private $databaseSelect;
11
    private $databaseCrud;
12
13
	public function __construct($db, $table, $primaryKey = 'id', array $options = []) {
14
		$options = new DatabaseOptions($db, $options);
15
		$adapter = $options->getAdapter();
16
17
		$this->primaryKey = is_array($primaryKey) ? $primaryKey : [$primaryKey];
18
19
		$this->fields = implode(',', array_map([$adapter, 'quote'], (array) $options->read('fields')));
20
21
		$defaultSort = $options->read('defaultSort') !== false ? $options->read('defaultSort')  : implode(', ', $this->primaryKey);
22
23
        $databaseModify = new DatabaseModify($adapter, $options->getEditMode(), $table);
24
25
        $this->databaseSelect = new DatabaseSelect($adapter, $databaseModify, $table, $defaultSort);
26
        $this->databaseCrud = new DatabaseCrud($adapter, $databaseModify, $this->databaseSelect, $table, $this->primaryKey);
27
28
		$databaseModify->optimizeColumns();
29
	}
30
31
	public function getPrimaryKey() {
32
		return $this->primaryKey;
33
	}
34
35
	public function deleteById($id) {
36
		$this->databaseCrud->deleteById($id);
37
	}
38
39
	public function findById($id) {
40
		return $this->databaseSelect->findById($id, $this->getPrimaryKey()[0]);
41
	}
42
43
	public function findAggregate($function, $field, $group = null, array $criteria = [], array $options = []) {
44
		return $this->databaseSelect->findAggregate($function, $field, $group, $criteria, $options);
45
	}
46
47
	public function findByField(array $fields, $options = []) {
48
        return $this->databaseSelect->findByField($fields, $options);
49
	}
50
51
	public function deleteByField(array $fields, array $options = []) {
52
		$this->databaseCrud->deleteByField($fields, $options);
53
	}
54
55
	public function save($data) {
56
        $this->databaseCrud->save($data, true);
57
	}
58
}
59