From d3c1e895dffeea81acc4ddff8d475b9cfc3a0ad4 Mon Sep 17 00:00:00 2001 From: Git'Fellow <12234510+solracsf@users.noreply.github.com> Date: Sat, 8 Nov 2025 15:03:04 +0100 Subject: [PATCH 1/2] fix(cron): Split Card IDs into chunks Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com> --- lib/Sharing/DeckShareProvider.php | 52 +++++++++++-------------------- 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/lib/Sharing/DeckShareProvider.php b/lib/Sharing/DeckShareProvider.php index e774312481..0bdcc268b3 100644 --- a/lib/Sharing/DeckShareProvider.php +++ b/lib/Sharing/DeckShareProvider.php @@ -49,39 +49,18 @@ class DeckShareProvider implements \OCP\Share\IShareProvider { public const SHARE_TYPE_DECK_USER = IShare::TYPE_DECK_USER; - private IDBConnection $dbConnection; - private IManager $shareManager; - private AttachmentCacheHelper $attachmentCacheHelper; - private BoardMapper $boardMapper; - private CardMapper $cardMapper; - private PermissionService $permissionService; - private ITimeFactory $timeFactory; - private IL10N $l; - private IMimeTypeLoader $mimeTypeLoader; - private ?string $userId; - public function __construct( - IDBConnection $connection, - IManager $shareManager, - BoardMapper $boardMapper, - CardMapper $cardMapper, - PermissionService $permissionService, - AttachmentCacheHelper $attachmentCacheHelper, - IL10N $l, - ITimeFactory $timeFactory, - IMimeTypeLoader $mimeTypeLoader, - ?string $userId, + private IDBConnection $connection, + private IManager $shareManager, + private BoardMapper $boardMapper, + private CardMapper $cardMapper, + private PermissionService $permissionService, + private AttachmentCacheHelper $attachmentCacheHelper, + private IL10N $l, + private ITimeFactory $timeFactory, + private IMimeTypeLoader $mimeTypeLoader, + private ?string $userId, ) { - $this->dbConnection = $connection; - $this->shareManager = $shareManager; - $this->boardMapper = $boardMapper; - $this->cardMapper = $cardMapper; - $this->attachmentCacheHelper = $attachmentCacheHelper; - $this->permissionService = $permissionService; - $this->l = $l; - $this->timeFactory = $timeFactory; - $this->mimeTypeLoader = $mimeTypeLoader; - $this->userId = $userId; } public static function register(IEventDispatcher $dispatcher): void { @@ -1049,11 +1028,18 @@ public function getAllShares(): iterable { public function getOrphanedAttachmentShares(): array { $allCardIds = $this->cardMapper->getAllCardIds(); + $qb = $this->dbConnection->getQueryBuilder(); $qb->select('*') ->from('share', 's') - ->where($qb->expr()->eq('s.share_type', $qb->createNamedParameter(IShare::TYPE_DECK))) - ->andWhere($qb->expr()->notIn('s.share_with', $qb->createNamedParameter($allCardIds, IQueryBuilder::PARAM_STR_ARRAY))); + ->where($qb->expr()->eq('s.share_type', $qb->createNamedParameter(IShare::TYPE_DECK))); + + $chunks = array_chunk($allCardIds, 1000); + foreach ($chunks as $chunk) { + $qb->andWhere( + $qb->expr()->notIn('s.share_with', $qb->createNamedParameter($chunk, IQueryBuilder::PARAM_STR_ARRAY)) + ); + } $cursor = $qb->execute(); $shares = []; From d72238d45dc2b427d07f526ac554ed8449b5993d Mon Sep 17 00:00:00 2001 From: Git'Fellow <12234510+solracsf@users.noreply.github.com> Date: Sat, 8 Nov 2025 15:08:39 +0100 Subject: [PATCH 2/2] fix: lint Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com> --- lib/Sharing/DeckShareProvider.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Sharing/DeckShareProvider.php b/lib/Sharing/DeckShareProvider.php index 0bdcc268b3..8dc8e02f73 100644 --- a/lib/Sharing/DeckShareProvider.php +++ b/lib/Sharing/DeckShareProvider.php @@ -50,7 +50,7 @@ class DeckShareProvider implements \OCP\Share\IShareProvider { public const SHARE_TYPE_DECK_USER = IShare::TYPE_DECK_USER; public function __construct( - private IDBConnection $connection, + private IDBConnection $dbConnection, private IManager $shareManager, private BoardMapper $boardMapper, private CardMapper $cardMapper, @@ -59,7 +59,7 @@ public function __construct( private IL10N $l, private ITimeFactory $timeFactory, private IMimeTypeLoader $mimeTypeLoader, - private ?string $userId, + private ?string $userId = null, ) { }