Completed
Push — master ( 3aeedd...be0cda )
by Maxence
03:35 queued 11s
created

MembershipRequest::getMembership()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
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 OCA\Circles\Exceptions\MembershipNotFoundException;
36
use OCA\Circles\Model\FederatedUser;
37
use OCA\Circles\Model\Membership;
38
39
40
/**
41
 * Class MembershipRequest
42
 *
43
 * @package OCA\Circles\Db
44
 */
45
class MembershipRequest extends MembershipRequestBuilder {
46
47
48
	/**
49
	 * @param Membership $membership
50
	 */
51
	public function insert(Membership $membership) {
52
		$qb = $this->getMembershipInsertSql();
53
		$qb->setValue('circle_id', $qb->createNamedParameter($membership->getCircleId()));
54
		$qb->setValue('single_id', $qb->createNamedParameter($membership->getSingleId()));
55
		$qb->setValue('level', $qb->createNamedParameter($membership->getLevel()));
56
		$qb->setValue('inheritance_first', $qb->createNamedParameter($membership->getInheritanceFirst()));
57
		$qb->setValue('inheritance_last', $qb->createNamedParameter($membership->getInheritanceLast()));
58
		$qb->setValue(
59
			'inheritance_path',
60
			$qb->createNamedParameter(json_encode($membership->getInheritancePath(), JSON_UNESCAPED_SLASHES))
61
		);
62
		$qb->setValue('inheritance_depth', $qb->createNamedParameter($membership->getInheritanceDepth()));
63
64
		$qb->execute();
65
	}
66
67
68
	/**
69
	 * @param Membership $membership
70
	 */
71
	public function update(Membership $membership) {
72
		$qb = $this->getMembershipUpdateSql();
73
		$qb->set('level', $qb->createNamedParameter($membership->getLevel()));
74
		$qb->set('inheritance_last', $qb->createNamedParameter($membership->getInheritanceLast()));
75
		$qb->set('inheritance_first', $qb->createNamedParameter($membership->getInheritanceFirst()));
76
		$qb->set(
77
			'inheritance_path',
78
			$qb->createNamedParameter(json_encode($membership->getInheritancePath(), JSON_UNESCAPED_SLASHES))
79
		);
80
		$qb->set('inheritance_depth', $qb->createNamedParameter($membership->getInheritanceDepth()));
81
82
		$qb->limitToSingleId($membership->getSingleId());
83
		$qb->limitToCircleId($membership->getCircleId());
84
85
		$qb->execute();
86
	}
87
88
89
	/**
90
	 * @param string $circleId
91
	 * @param string $singleId
92
	 *
93
	 * @return Membership
94
	 * @throws MembershipNotFoundException
95
	 */
96
	public function getMembership(string $circleId, string $singleId): Membership {
97
		$qb = $this->getMembershipSelectSql();
98
		$qb->limitToCircleId($circleId);
99
		$qb->limitToSingleId($singleId);
100
101
		return $this->getItemFromRequest($qb);
102
	}
103
104
105
	/**
106
	 * @param string $singleId
107
	 *
108
	 * @return Membership[]
109
	 */
110
	public function getMemberships(string $singleId): array {
111
		$qb = $this->getMembershipSelectSql();
112
		$qb->limitToSingleId($singleId);
113
114
		return $this->getItemsFromRequest($qb);
115
	}
116
117
118
	/**
119
	 * @param string $singleId
120
	 *
121
	 * @return Membership[]
122
	 */
123
	public function getChildren(string $singleId): array {
124
		$qb = $this->getMembershipSelectSql();
125
		$qb->limitToCircleId($singleId);
126
127
		return $this->getItemsFromRequest($qb);
128
	}
129
130
131
	/**
132
	 * @param string $singleId
133
	 * @param bool $all
134
	 *
135
	 * @return void
136
	 */
137
	public function removeBySingleId(string $singleId, bool $all = false): void {
138
		$qb = $this->getMembershipDeleteSql();
139
140
		if (!$all) {
141
			$qb->limitToSingleId($singleId);
142
		}
143
144
		$qb->execute();
145
	}
146
147
148
	/**
149
	 * @param Membership $membership
150
	 */
151
	public function delete(Membership $membership): void {
152
		$qb = $this->getMembershipDeleteSql();
153
		$qb->limitToSingleId($membership->getSingleId());
154
		$qb->limitToCircleId($membership->getCircleId());
155
156
		$qb->execute();
157
	}
158
159
160
	/**
161
	 * @param FederatedUser $federatedUser
162
	 */
163
	public function deleteFederatedUser(FederatedUser $federatedUser): void {
164
		$qb = $this->getMembershipDeleteSql();
165
		$qb->limitToSingleId($federatedUser->getSingleId());
166
167
		$qb->execute();
168
	}
169
170
}
171
172