Skip to content

Commit 2c5f60f

Browse files
authored
Merge pull request #2580 from nextcloud/backport/2564/stable32
[stable32] refactor: flatten nesting with early returns
2 parents f9a54aa + cad5534 commit 2c5f60f

2 files changed

Lines changed: 36 additions & 43 deletions

File tree

lib/Data.php

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -324,35 +324,38 @@ public function get(GroupHelper $groupHelper, UserSettings $userSettings, $user,
324324
* @throws \OutOfBoundsException If $since is not owned by $user
325325
*/
326326
protected function setOffsetFromSince(IQueryBuilder $query, $user, $since, $sort) {
327-
if ($since) {
328-
$queryBuilder = $this->connection->getQueryBuilder();
329-
$queryBuilder->select(['affecteduser', 'timestamp'])
330-
->from('activity')
331-
->where($queryBuilder->expr()->eq('activity_id', $queryBuilder->createNamedParameter((int)$since)));
332-
$result = $queryBuilder->executeQuery();
333-
$activity = $result->fetch();
334-
$result->closeCursor();
335-
336-
if ($activity) {
337-
if ($activity['affecteduser'] !== $user) {
338-
throw new \OutOfBoundsException('Invalid since', 2);
339-
}
340-
$timestamp = (int)$activity['timestamp'];
341-
342-
if ($sort === 'DESC') {
343-
$query->andWhere($query->expr()->lte('timestamp', $query->createNamedParameter($timestamp)));
344-
$query->andWhere($query->expr()->lt('activity_id', $query->createNamedParameter($since)));
345-
} else {
346-
$query->andWhere($query->expr()->gte('timestamp', $query->createNamedParameter($timestamp)));
347-
$query->andWhere($query->expr()->gt('activity_id', $query->createNamedParameter($since)));
348-
}
349-
return [];
350-
}
327+
if (!$since) {
328+
return $this->getFirstKnownActivityHeader($user, $sort);
351329
}
352330

353-
/**
354-
* Couldn't find the since, so find the oldest one and set the header
355-
*/
331+
$queryBuilder = $this->connection->getQueryBuilder();
332+
$queryBuilder->select(['affecteduser', 'timestamp'])
333+
->from('activity')
334+
->where($queryBuilder->expr()->eq('activity_id', $queryBuilder->createNamedParameter((int)$since)));
335+
$result = $queryBuilder->executeQuery();
336+
$activity = $result->fetch();
337+
$result->closeCursor();
338+
339+
if (!$activity) {
340+
return $this->getFirstKnownActivityHeader($user, $sort);
341+
}
342+
343+
if ($activity['affecteduser'] !== $user) {
344+
throw new \OutOfBoundsException('Invalid since', 2);
345+
}
346+
347+
$timestamp = (int)$activity['timestamp'];
348+
if ($sort === 'DESC') {
349+
$query->andWhere($query->expr()->lte('timestamp', $query->createNamedParameter($timestamp)));
350+
$query->andWhere($query->expr()->lt('activity_id', $query->createNamedParameter($since)));
351+
} else {
352+
$query->andWhere($query->expr()->gte('timestamp', $query->createNamedParameter($timestamp)));
353+
$query->andWhere($query->expr()->gt('activity_id', $query->createNamedParameter($since)));
354+
}
355+
return [];
356+
}
357+
358+
private function getFirstKnownActivityHeader(string $user, string $sort): array {
356359
$fetchQuery = $this->connection->getQueryBuilder();
357360
$fetchQuery->select('activity_id')
358361
->from('activity')
@@ -364,11 +367,8 @@ protected function setOffsetFromSince(IQueryBuilder $query, $user, $since, $sort
364367
$result->closeCursor();
365368

366369
if ($activity !== false) {
367-
return [
368-
'X-Activity-First-Known' => (int)$activity['activity_id'],
369-
];
370+
return ['X-Activity-First-Known' => (int)$activity['activity_id']];
370371
}
371-
372372
return [];
373373
}
374374

lib/MailQueueHandler.php

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -156,16 +156,7 @@ protected function getAffectedUsers(?int $limit, int $latestSend, bool $forceSen
156156
} elseif ($restrictEmails === UserSettings::EMAIL_SEND_ASAP) {
157157
$query->where($query->expr()->eq('amq_timestamp', 'amq_latest_send'));
158158
}
159-
160-
$result = $query->executeQuery();
161-
162-
$affectedUsers = [];
163-
while ($row = $result->fetch()) {
164-
$affectedUsers[] = $row['amq_affecteduser'];
165-
}
166-
$result->closeCursor();
167-
168-
return $affectedUsers;
159+
return $this->fetchAffectedUsers($query);
169160
}
170161

171162
if ($forceSending) {
@@ -174,14 +165,16 @@ protected function getAffectedUsers(?int $limit, int $latestSend, bool $forceSen
174165
$query->where($query->expr()->lt('amq_latest_send', $query->createNamedParameter($latestSend)));
175166
}
176167

177-
$result = $query->executeQuery();
168+
return $this->fetchAffectedUsers($query);
169+
}
178170

171+
private function fetchAffectedUsers(IQueryBuilder $query): array {
172+
$result = $query->executeQuery();
179173
$affectedUsers = [];
180174
while ($row = $result->fetch()) {
181175
$affectedUsers[] = $row['amq_affecteduser'];
182176
}
183177
$result->closeCursor();
184-
185178
return $affectedUsers;
186179
}
187180

0 commit comments

Comments
 (0)