Passed
Pull Request — master (#1367)
by René
09:22 queued 04:07
created

WatchMapper   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 73
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 5
eloc 30
c 2
b 0
f 0
dl 0
loc 73
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A findForTable() 0 10 1
A findForPollIdAndTable() 0 13 1
A __construct() 0 2 1
A findUpdatesForPollId() 0 13 1
A findForPollId() 0 10 1
1
<?php
2
/**
3
 * @copyright Copyright (c) 2017 Vinzenz Rosenkranz <[email protected]>
4
 *
5
 * @author Vinzenz Rosenkranz <[email protected]>
6
 * @author René Gieling <[email protected]>
7
 *
8
 * @license GNU AGPL version 3 or any later version
9
 *
10
 *  This program is free software: you can redistribute it and/or modify
11
 *  it under the terms of the GNU Affero General Public License as
12
 *  published by the Free Software Foundation, either version 3 of the
13
 *  License, or (at your option) any later version.
14
 *
15
 *  This program is distributed in the hope that it will be useful,
16
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 *  GNU Affero General Public License for more details.
19
 *
20
 *  You should have received a copy of the GNU Affero General Public License
21
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
22
 *
23
 */
24
25
namespace OCA\Polls\Db;
26
27
use OCP\IDBConnection;
28
use OCP\AppFramework\Db\QBMapper;
29
30
/**
31
 * @template-extends QBMapper<Watch>
32
 */
33
class WatchMapper extends QBMapper {
34
	public function __construct(IDBConnection $db) {
35
		parent::__construct($db, 'polls_watch', '\OCA\Polls\Db\Watch');
36
	}
37
38
	/**
39
	 * @throws \OCP\AppFramework\Db\DoesNotExistException if not found
40
	 * @return Watch[]
41
	 */
42
	public function findForPollId(int $pollId): array {
43
		$qb = $this->db->getQueryBuilder();
44
45
		$qb->select('*')
46
		   ->from($this->getTableName())
47
		   ->where(
48
			   $qb->expr()->eq('poll_id', $qb->createNamedParameter($pollId))
49
		   );
50
51
		return $this->findEntities($qb);
52
	}
53
54
	/**
55
	 * @throws \OCP\AppFramework\Db\DoesNotExistException if not found
56
	 * @return Watch[]
57
	 */
58
	public function findUpdatesForPollId(int $pollId, int $offset): array {
59
		$qb = $this->db->getQueryBuilder();
60
61
		$qb->select('*')
62
		   ->from($this->getTableName())
63
		   ->where(
64
			   $qb->expr()->eq('poll_id', $qb->createNamedParameter($pollId))
65
		   )
66
		   ->andWhere(
67
			   $qb->expr()->gt('updated', $qb->createNamedParameter($offset))
68
		   );
69
70
		return $this->findEntities($qb);
71
	}
72
73
	/**
74
	 * @throws \OCP\AppFramework\Db\DoesNotExistException if not found
75
	 * @return Watch[]
76
	 */
77
	public function findForTable(int $table): array {
78
		$qb = $this->db->getQueryBuilder();
79
80
		$qb->select('*')
81
		   ->from($this->getTableName())
82
		   ->where(
83
			   $qb->expr()->eq('table', $qb->createNamedParameter($table))
84
		   );
85
86
		return $this->findEntities($qb);
87
	}
88
89
	/**
90
	 * @throws \OCP\AppFramework\Db\DoesNotExistException if not found
91
	 * @return Watch
92
	 */
93
	public function findForPollIdAndTable(int $pollId, string $table): Watch {
94
		$qb = $this->db->getQueryBuilder();
95
96
		$qb->select('*')
97
		   ->from($this->getTableName())
98
		   ->where(
99
			   $qb->expr()->eq('poll_id', $qb->createNamedParameter($pollId))
100
		   )
101
		   ->andWhere(
102
			   $qb->expr()->eq('table', $qb->createNamedParameter($table))
103
		   );
104
105
		return $this->findEntity($qb);
106
	}
107
}
108