]> source.dussan.org Git - nextcloud-server.git/commitdiff
enh: add clean up buffer
authorChristopher Ng <chrng8@gmail.com>
Fri, 4 Aug 2023 00:42:00 +0000 (17:42 -0700)
committerChristopher Ng <chrng8@gmail.com>
Wed, 9 Aug 2023 17:41:18 +0000 (10:41 -0700)
Signed-off-by: Christopher Ng <chrng8@gmail.com>
apps/files_reminders/lib/Db/ReminderMapper.php
apps/files_reminders/lib/Service/ReminderService.php

index 97f7ed0900b65b39eb794c16c63d0c2733683f2d..1a8f05a3db958d20d9ebca6b08a29170fecb2903 100644 (file)
@@ -26,6 +26,7 @@ declare(strict_types=1);
 
 namespace OCA\FilesReminders\Db;
 
+use DateTime;
 use OCP\AppFramework\Db\DoesNotExistException;
 use OCP\AppFramework\Db\QBMapper;
 use OCP\DB\QueryBuilder\IQueryBuilder;
@@ -138,12 +139,13 @@ class ReminderMapper extends QBMapper {
        /**
         * @return Reminder[]
         */
-       public function findNotified(?int $limit = null) {
+       public function findNotified(DateTime $buffer, ?int $limit = null) {
                $qb = $this->db->getQueryBuilder();
 
                $qb->select('id', 'user_id', 'file_id', 'due_date', 'updated_at', 'created_at', 'notified')
                        ->from($this->getTableName())
                        ->where($qb->expr()->eq('notified', $qb->createNamedParameter(true, IQueryBuilder::PARAM_BOOL)))
+                       ->andWhere($qb->expr()->lt('due_date', $qb->createNamedParameter($buffer, IQueryBuilder::PARAM_DATE)))
                        ->orderBy('due_date', 'ASC')
                        ->setMaxResults($limit);
 
index 5c7193259c12cf85263de40757931e6e544b7105..010f458e8721e7433e9688dd269a5a13ccbb668a 100644 (file)
@@ -167,7 +167,10 @@ class ReminderService {
        }
 
        public function cleanUp(?int $limit = null): void {
-               $reminders = $this->reminderMapper->findNotified($limit);
+               $buffer = (new DateTime())
+                       ->setTimezone(new DateTimeZone('UTC'))
+                       ->modify('-1 day');
+               $reminders = $this->reminderMapper->findNotified($buffer, $limit);
                foreach ($reminders as $reminder) {
                        $this->reminderMapper->delete($reminder);
                }