Skip to content

Commit

Permalink
fix(files_reminders): Update cache when creating, updating, or deleting
Browse files Browse the repository at this point in the history
Signed-off-by: Christopher Ng <[email protected]>
  • Loading branch information
Pytal committed Jan 17, 2025
1 parent 558386a commit f04cc38
Showing 1 changed file with 18 additions and 14 deletions.
32 changes: 18 additions & 14 deletions apps/files_reminders/lib/Service/ReminderService.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,19 +88,12 @@ public function getAll(?IUser $user = null) {
*/
public function createOrUpdate(IUser $user, int $fileId, DateTime $dueDate): bool {
$now = new DateTime('now', new DateTimeZone('UTC'));
try {
$reminder = $this->reminderMapper->findDueForUser($user, $fileId);
$reminder->setDueDate($dueDate);
$reminder->setUpdatedAt($now);
$this->reminderMapper->update($reminder);
$this->cache->set("{$user->getUID()}-$fileId", $reminder);
return false;
} catch (DoesNotExistException $e) {
$reminder = $this->getDueForUser($user, $fileId);
if ($reminder === null) {
$node = $this->root->getUserFolder($user->getUID())->getFirstNodeById($fileId);
if (!$node) {
throw new NodeNotFoundException();
}
// Create new reminder if no reminder is found
$reminder = new Reminder();
$reminder->setUserId($user->getUID());
$reminder->setFileId($fileId);
Expand All @@ -111,27 +104,32 @@ public function createOrUpdate(IUser $user, int $fileId, DateTime $dueDate): boo
$this->cache->set("{$user->getUID()}-$fileId", $reminder);
return true;
}
$reminder->setDueDate($dueDate);
$reminder->setUpdatedAt($now);
$this->reminderMapper->update($reminder);
$this->cache->set("{$user->getUID()}-$fileId", $reminder);
return false;
}

/**
* @throws DoesNotExistException
*/
public function remove(IUser $user, int $fileId): void {
$reminder = $this->reminderMapper->findDueForUser($user, $fileId);
$this->reminderMapper->delete($reminder);
$reminder = $this->getDueForUser($user, $fileId);
$this->deleteReminder($reminder);
}

public function removeAllForNode(Node $node): void {
$reminders = $this->reminderMapper->findAllForNode($node);
foreach ($reminders as $reminder) {
$this->reminderMapper->delete($reminder);
$this->deleteReminder($reminder);
}
}

public function removeAllForUser(IUser $user): void {
$reminders = $this->reminderMapper->findAllForUser($user);
foreach ($reminders as $reminder) {
$this->reminderMapper->delete($reminder);
$this->deleteReminder($reminder);
}
}

Expand Down Expand Up @@ -163,6 +161,7 @@ public function send(Reminder $reminder): void {
try {
$this->notificationManager->notify($notification);
$this->reminderMapper->markNotified($reminder);
$this->cache->set("{$user->getUID()}-{$reminder->getFileId()}", $reminder);
} catch (Throwable $th) {
$this->logger->error($th->getMessage(), $th->getTrace());
}
Expand All @@ -174,7 +173,12 @@ public function cleanUp(?int $limit = null): void {
->modify('-1 day');
$reminders = $this->reminderMapper->findNotified($buffer, $limit);
foreach ($reminders as $reminder) {
$this->reminderMapper->delete($reminder);
$this->deleteReminder($reminder);
}
}

private function deleteReminder(Reminder $reminder): void {
$this->reminderMapper->delete($reminder);
$this->cache->set("{$reminder->getUserId()}-{$reminder->getFileId()}", false);
}
}

0 comments on commit f04cc38

Please sign in to comment.