Passed
Branch v1.4.0 (ac3196)
by Wanderson
01:13
created

WriteTrait::insertOrUpdate()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 5
nc 2
nop 0
dl 0
loc 9
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Win\Database\Orm\Traits;
4
5
use Win\Database\Orm\Model;
6
use Win\Database\Sql\Queries\Delete;
7
use Win\Database\Sql\Queries\Insert;
8
use Win\Database\Sql\Queries\Update;
9
10
trait WriteTrait
11
{
12
	use ModelMapperTrait;
13
14
	/** @var Model */
15
	protected $model;
16
17
	/**
18
	 * @param Model $model
19
	 * @return bool
20
	 */
21
	public function save(Model $model)
22
	{
23
		$this->model = $model;
24
25
		return $this->insertOrUpdate();
26
	}
27
28
	/** @return bool */
29
	private function insertOrUpdate()
30
	{
31
		if (!$this->modelExists()) {
32
			$success = $this->insert();
33
		} else {
34
			$success = $this->update();
35
		}
36
37
		return $success;
38
	}
39
40
	/** @return bool */
41
	private function insert()
42
	{
43
		$query = new Insert($this);
44
		$success = $query->execute();
45
		$this->model->setId((int) static::$db->getLastInsertId());
46
47
		return $success;
48
	}
49
50
	/** @return bool */
51
	public function update()
52
	{
53
		$query = new Update($this);
54
55
		return $query->execute();
56
	}
57
58
	/**
59
	 * Remove o registro do banco
60
	 * @param Model $model
61
	 * @return bool
62
	 */
63
	public function delete(Model $model)
64
	{
65
		$query = new Delete($this);
66
		$query->where->add('id', '=', $model->getId());
67
68
		return $query->execute();
69
	}
70
}
71