Skip to content

Commit 4630fee

Browse files
authored
Merge pull request #834 from nextcloud/perf/db/avoid-double-query
perf(db): Avoid double querying
2 parents 5b79ad3 + 5b28e7a commit 4630fee

1 file changed

Lines changed: 34 additions & 43 deletions

File tree

lib/UserBackend.php

Lines changed: 34 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -180,35 +180,32 @@ public function initializeHomeDir(string $uid): void {
180180
* @since 4.5.0
181181
*/
182182
public function deleteUser($uid) {
183-
if ($this->userExistsInDatabase($uid)) {
184-
$qb = $this->db->getQueryBuilder();
185-
$qb->delete('user_saml_users')
186-
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
187-
->execute();
188-
return true;
189-
}
190-
return false;
183+
$qb = $this->db->getQueryBuilder();
184+
$affected = $qb->delete('user_saml_users')
185+
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
186+
->executeStatement();
187+
return $affected > 0;
191188
}
192189

193190
/**
194191
* Returns the user's home directory, if home directory mapping is set up.
195192
*
196193
* @param string $uid the username
197-
* @return string
194+
* @return string|bool
198195
*/
199196
public function getHome(string $uid) {
200-
if ($this->userExistsInDatabase($uid)) {
201-
$qb = $this->db->getQueryBuilder();
202-
$qb->select('home')
203-
->from('user_saml_users')
204-
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
205-
->setMaxResults(1);
206-
$result = $qb->execute();
207-
$users = $result->fetchAll();
208-
if (isset($users[0]['home'])) {
209-
return $users[0]['home'];
210-
}
197+
$qb = $this->db->getQueryBuilder();
198+
$qb->select('home')
199+
->from('user_saml_users')
200+
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
201+
->setMaxResults(1);
202+
$result = $qb->executeQuery();
203+
$users = $result->fetchAll();
204+
$result->closeCursor();
205+
if (isset($users[0]['home'])) {
206+
return $users[0]['home'];
211207
}
208+
return false;
212209
}
213210

214211
/**
@@ -249,16 +246,12 @@ public function setDisplayName($uid, $displayName) {
249246
return $backend->setDisplayName($uid, $displayName);
250247
}
251248

252-
if ($this->userExistsInDatabase($uid)) {
253-
$qb = $this->db->getQueryBuilder();
254-
$qb->update('user_saml_users')
255-
->set('displayname', $qb->createNamedParameter($displayName))
256-
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
257-
->execute();
258-
return true;
259-
}
260-
261-
return false;
249+
$qb = $this->db->getQueryBuilder();
250+
$affected = $qb->update('user_saml_users')
251+
->set('displayname', $qb->createNamedParameter($displayName))
252+
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
253+
->executeStatement();
254+
return $affected > 0;
262255
}
263256

264257
/**
@@ -271,21 +264,19 @@ public function setDisplayName($uid, $displayName) {
271264
public function getDisplayName($uid): string {
272265
if ($backend = $this->getActualUserBackend($uid)) {
273266
return $backend->getDisplayName($uid);
274-
} else {
275-
if ($this->userExistsInDatabase($uid)) {
276-
$qb = $this->db->getQueryBuilder();
277-
$qb->select('displayname')
278-
->from('user_saml_users')
279-
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
280-
->setMaxResults(1);
281-
$result = $qb->execute();
282-
$users = $result->fetchAll();
283-
if (isset($users[0]['displayname'])) {
284-
return $users[0]['displayname'];
285-
}
286-
}
287267
}
288268

269+
$qb = $this->db->getQueryBuilder();
270+
$qb->select('displayname')
271+
->from('user_saml_users')
272+
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
273+
->setMaxResults(1);
274+
$result = $qb->executeQuery();
275+
$users = $result->fetchAll();
276+
$result->closeCursor();
277+
if (isset($users[0]['displayname'])) {
278+
return $users[0]['displayname'];
279+
}
289280
return $uid;
290281
}
291282

0 commit comments

Comments
 (0)