From e2da63c10ed069df4a5684efdd4f9237a0168f13 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 50258c98a0..5a8a22d5f9 100644 --- a/lib/Sharing/DeckShareProvider.php +++ b/lib/Sharing/DeckShareProvider.php @@ -51,39 +51,18 @@ class DeckShareProvider implements \OCP\Share\IShareProvider, IPartialShareProvi 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 { @@ -1096,11 +1075,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 e747ce8ce9312bd99af2ba8f7c20d40c10cdf93d 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 5a8a22d5f9..459590860e 100644 --- a/lib/Sharing/DeckShareProvider.php +++ b/lib/Sharing/DeckShareProvider.php @@ -52,7 +52,7 @@ class DeckShareProvider implements \OCP\Share\IShareProvider, IPartialShareProvi 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, @@ -61,7 +61,7 @@ public function __construct( private IL10N $l, private ITimeFactory $timeFactory, private IMimeTypeLoader $mimeTypeLoader, - private ?string $userId, + private ?string $userId = null, ) { }