@@ -827,25 +827,36 @@ public function setChildrenOrder(int $folderId, array $newChildrenOrder): void {
827827 return $ dict ;
828828 }, []);
829829
830+ $ qb = $ this ->db ->getQueryBuilder ();
831+ $ qb
832+ ->update ('bookmarks_tree ' )
833+ ->set ('index ' , $ qb ->createParameter ('index ' ))
834+ ->where ($ qb ->expr ()->eq ('id ' , $ qb ->createParameter ('id ' )))
835+ ->andWhere ($ qb ->expr ()->eq ('parent_folder ' , $ qb ->createParameter ('parent_folder ' )))
836+ ->andWhere ($ qb ->expr ()->eq ('type ' , $ qb ->createParameter ('type ' )));
837+ $ this ->db ->beginTransaction ();
830838 foreach ($ newChildrenOrder as $ i => $ child ) {
831839 if (!in_array ($ child ['type ' ], [TreeMapper::TYPE_FOLDER , TreeMapper::TYPE_BOOKMARK ], true )) {
832840 continue ;
833841 }
834842
843+ if ($ i % 1000 === 0 ) {
844+ $ this ->db ->commit ();
845+ $ this ->db ->beginTransaction ();
846+ }
847+
835848 if (($ child ['type ' ] === TreeMapper::TYPE_FOLDER ) && isset ($ foldersToShares [$ child ['id ' ]])) {
836849 $ child ['type ' ] = TreeMapper::TYPE_SHARE ;
837850 $ child ['id ' ] = $ foldersToShares [$ child ['id ' ]];
838851 }
839852
840- $ qb = $ this ->db ->getQueryBuilder ();
841- $ qb
842- ->update ('bookmarks_tree ' )
843- ->set ('index ' , $ qb ->createPositionalParameter ($ i ))
844- ->where ($ qb ->expr ()->eq ('id ' , $ qb ->createPositionalParameter ($ child ['id ' ])))
845- ->andWhere ($ qb ->expr ()->eq ('parent_folder ' , $ qb ->createPositionalParameter ($ folderId )))
846- ->andWhere ($ qb ->expr ()->eq ('type ' , $ qb ->createPositionalParameter ($ child ['type ' ])));
853+ $ qb ->setParameter ('index ' , $ i , IQueryBuilder::PARAM_INT );
854+ $ qb ->setParameter ('id ' , $ child ['id ' ], IQueryBuilder::PARAM_INT );
855+ $ qb ->setParameter ('parent_folder ' , $ folderId );
856+ $ qb ->setParameter ('type ' , $ child ['type ' ]);
847857 $ qb ->executeStatement ();
848858 }
859+ $ this ->db ->commit ();
849860
850861 $ this ->eventDispatcher ->dispatch (UpdateEvent::class, new UpdateEvent (TreeMapper::TYPE_FOLDER , $ folderId ));
851862 }
0 commit comments