Skip to content

Commit

Permalink
perf(db): Avoid double querying
Browse files Browse the repository at this point in the history
Signed-off-by: Christoph Wurst <[email protected]>
  • Loading branch information
ChristophWurst authored and blizzz committed Apr 30, 2024
1 parent 5b79ad3 commit 5b28e7a
Showing 1 changed file with 34 additions and 43 deletions.
77 changes: 34 additions & 43 deletions lib/UserBackend.php
Original file line number Diff line number Diff line change
Expand Up @@ -180,35 +180,32 @@ public function initializeHomeDir(string $uid): void {
* @since 4.5.0
*/
public function deleteUser($uid) {
if ($this->userExistsInDatabase($uid)) {
$qb = $this->db->getQueryBuilder();
$qb->delete('user_saml_users')
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
->execute();
return true;
}
return false;
$qb = $this->db->getQueryBuilder();
$affected = $qb->delete('user_saml_users')
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
->executeStatement();
return $affected > 0;
}

/**
* Returns the user's home directory, if home directory mapping is set up.
*
* @param string $uid the username
* @return string
* @return string|bool
*/
public function getHome(string $uid) {
if ($this->userExistsInDatabase($uid)) {
$qb = $this->db->getQueryBuilder();
$qb->select('home')
->from('user_saml_users')
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
->setMaxResults(1);
$result = $qb->execute();
$users = $result->fetchAll();
if (isset($users[0]['home'])) {
return $users[0]['home'];
}
$qb = $this->db->getQueryBuilder();
$qb->select('home')
->from('user_saml_users')
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
->setMaxResults(1);
$result = $qb->executeQuery();
$users = $result->fetchAll();
$result->closeCursor();
if (isset($users[0]['home'])) {
return $users[0]['home'];
}
return false;
}

/**
Expand Down Expand Up @@ -249,16 +246,12 @@ public function setDisplayName($uid, $displayName) {
return $backend->setDisplayName($uid, $displayName);
}

if ($this->userExistsInDatabase($uid)) {
$qb = $this->db->getQueryBuilder();
$qb->update('user_saml_users')
->set('displayname', $qb->createNamedParameter($displayName))
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
->execute();
return true;
}

return false;
$qb = $this->db->getQueryBuilder();
$affected = $qb->update('user_saml_users')
->set('displayname', $qb->createNamedParameter($displayName))
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
->executeStatement();
return $affected > 0;
}

/**
Expand All @@ -271,21 +264,19 @@ public function setDisplayName($uid, $displayName) {
public function getDisplayName($uid): string {
if ($backend = $this->getActualUserBackend($uid)) {
return $backend->getDisplayName($uid);
} else {
if ($this->userExistsInDatabase($uid)) {
$qb = $this->db->getQueryBuilder();
$qb->select('displayname')
->from('user_saml_users')
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
->setMaxResults(1);
$result = $qb->execute();
$users = $result->fetchAll();
if (isset($users[0]['displayname'])) {
return $users[0]['displayname'];
}
}
}

$qb = $this->db->getQueryBuilder();
$qb->select('displayname')
->from('user_saml_users')
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
->setMaxResults(1);
$result = $qb->executeQuery();
$users = $result->fetchAll();
$result->closeCursor();
if (isset($users[0]['displayname'])) {
return $users[0]['displayname'];
}
return $uid;
}

Expand Down

0 comments on commit 5b28e7a

Please sign in to comment.