Completed
Pull Request — master (#551)
by Maxence
02:47
created

MembershipRequestBuilder::getMembershipSelectSql()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
6
/**
7
 * Circles - Bring cloud-users closer together.
8
 *
9
 * This file is licensed under the Affero General Public License version 3 or
10
 * later. See the COPYING file.
11
 *
12
 * @author Maxence Lange <[email protected]>
13
 * @copyright 2021
14
 * @license GNU AGPL version 3 or any later version
15
 *
16
 * This program is free software: you can redistribute it and/or modify
17
 * it under the terms of the GNU Affero General Public License as
18
 * published by the Free Software Foundation, either version 3 of the
19
 * License, or (at your option) any later version.
20
 *
21
 * This program is distributed in the hope that it will be useful,
22
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24
 * GNU Affero General Public License for more details.
25
 *
26
 * You should have received a copy of the GNU Affero General Public License
27
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
28
 *
29
 */
30
31
32
namespace OCA\Circles\Db;
33
34
35
use daita\MySmallPhpTools\Exceptions\RowNotFoundException;
36
use OCA\Circles\Model\Member;
37
use OCA\Circles\Model\Membership;
38
39
40
/**
41
 * Class MembershipRequestBuilder
42
 *
43
 * @package OCA\Circles\Db
44
 */
45
class MembershipRequestBuilder extends CoreRequestBuilder {
46
47
48
	/**
49
	 * @return CoreQueryBuilder
50
	 */
51
	protected function getMembershipInsertSql(): CoreQueryBuilder {
52
		$qb = $this->getQueryBuilder();
53
		$qb->insert(self::TABLE_MEMBERSHIP);
54
55
		return $qb;
56
	}
57
58
59
	/**
60
	 * @return CoreQueryBuilder
61
	 */
62
	protected function getMembershipUpdateSql(): CoreQueryBuilder {
63
		$qb = $this->getQueryBuilder();
64
		$qb->update(self::TABLE_MEMBERSHIP);
65
66
		return $qb;
67
	}
68
69
70
	/**
71
	 * @return CoreQueryBuilder
72
	 */
73
	protected function getMembershipSelectSql(): CoreQueryBuilder {
74
		$qb = $this->getQueryBuilder();
75
		$qb->select('ms.id', 'ms.circle_id', 'ms.member_id', 'ms.level')
76
		   ->from(self::TABLE_MEMBERSHIP, 'ms')
77
		   ->setDefaultSelectAlias('ms');
78
79
		return $qb;
80
	}
81
82
83
	/**
84
	 * Base of the Sql Delete request
85
	 *
86
	 * @return CoreQueryBuilder
87
	 */
88
	protected function getMembershipDeleteSql(): CoreQueryBuilder {
89
		$qb = $this->getQueryBuilder();
90
		$qb->delete(self::TABLE_MEMBERSHIP);
91
92
		return $qb;
93
	}
94
95
96
	/**
97
	 * @param CoreQueryBuilder $qb
98
	 *
99
	 * @return Member
100
	 * @throws RowNotFoundException
101
	 */
102
	public function getItemFromRequest(CoreQueryBuilder $qb): Member {
103
		/** @var Member $member */
104
		$member = $qb->asItem(Membership::class);
105
106
		return $member;
107
	}
108
109
	/**
110
	 * @param CoreQueryBuilder $qb
111
	 *
112
	 * @return Membership[]
113
	 */
114
	public function getItemsFromRequest(CoreQueryBuilder $qb): array {
115
		/** @var Membership[] $result */
116
		return $qb->asItems(Membership::class);
117
	}
118
119
}
120