summaryrefslogtreecommitdiffstats
path: root/lib/Db
diff options
context:
space:
mode:
authorSean Molenaar <sean@seanmolenaar.eu>2020-11-16 20:49:38 +0100
committerSean Molenaar <SMillerDev@users.noreply.github.com>2020-12-08 13:58:12 +0100
commit4ee3fcb78113caff9f2b890cb7d1702dc936d81e (patch)
treef8fc506f997acdb8e5315c62bb068b0b6db6cd56 /lib/Db
parent8abddeab4f541883721d912f97dec07bffdfc6b8 (diff)
Refactor User ID fetching and fix non-specific cleanup
Signed-off-by: Sean Molenaar <sean@seanmolenaar.eu>
Diffstat (limited to 'lib/Db')
-rw-r--r--lib/Db/ItemMapperV2.php11
-rw-r--r--lib/Db/NewsMapperV2.php22
2 files changed, 29 insertions, 4 deletions
diff --git a/lib/Db/ItemMapperV2.php b/lib/Db/ItemMapperV2.php
index 4f6f82413..4a301fca2 100644
--- a/lib/Db/ItemMapperV2.php
+++ b/lib/Db/ItemMapperV2.php
@@ -149,4 +149,15 @@ class ItemMapperV2 extends NewsMapperV2
return $this->db->executeQuery($query)->fetch(FetchMode::ASSOCIATIVE);
}
+
+ /**
+ * No-op clear deleted items.
+ *
+ * @param string|null $userID
+ * @param int|null $oldestDelete
+ */
+ public function purgeDeleted(?string $userID, ?int $oldestDelete): void
+ {
+ //NO-OP
+ }
}
diff --git a/lib/Db/NewsMapperV2.php b/lib/Db/NewsMapperV2.php
index 5d1905151..cbfb84fde 100644
--- a/lib/Db/NewsMapperV2.php
+++ b/lib/Db/NewsMapperV2.php
@@ -64,16 +64,30 @@ abstract class NewsMapperV2 extends QBMapper
}
/**
- * Remove deleted items.
+ * Remove deleted entities.
+ *
+ * @param string|null $userID The user to purge
+ * @param int|null $oldestDelete The timestamp to purge from
*
* @return void
*/
- public function purgeDeleted(): void
+ public function purgeDeleted(?string $userID, ?int $oldestDelete): void
{
$builder = $this->db->getQueryBuilder();
$builder->delete($this->tableName)
- ->where('deleted_at != 0')
- ->execute();
+ ->andWhere('deleted_at != 0');
+
+ if ($userID !== null) {
+ $builder->andWhere('user_id = :user_id')
+ ->setParameter(':user_id', $userID);
+ }
+
+ if ($oldestDelete !== null) {
+ $builder->andWhere('deleted_at < :deleted_at')
+ ->setParameter(':deleted_at', $oldestDelete);
+ }
+
+ $builder->execute();
}
/**