From 540de7754fc5b65d482d943f8c99b422b8485f51 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 ca0dbc5e7..235612ef6 100644 --- a/lib/Sharing/DeckShareProvider.php +++ b/lib/Sharing/DeckShareProvider.php @@ -48,39 +48,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 { @@ -1053,11 +1032,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->executeQuery(); $shares = []; From 76184128a2d7c2f315ed90df455febba2d407c39 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 235612ef6..80d46d5df 100644 --- a/lib/Sharing/DeckShareProvider.php +++ b/lib/Sharing/DeckShareProvider.php @@ -49,7 +49,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, @@ -58,7 +58,7 @@ public function __construct( private IL10N $l, private ITimeFactory $timeFactory, private IMimeTypeLoader $mimeTypeLoader, - private ?string $userId, + private ?string $userId = null, ) { }