const arrayInChunks = Chunk.fromIterable(veryLargeArray).pipe(Chunk.chunksOf(10))
const updateTasks = Effect.forEach(arrayInChunks, (chunk) =>
Effect.gen(function* () {
const querySnapshot = yield* Effect.tryPromise({
try: () => db.collection("tasks").where("taskId", "in", chunk).get(),
catch: (error) => console.error(error),
});
const updateSubtasks = querySnapshot.docs.map((doc) =>
Effect.tryPromise({
try: () => db.collection("subtasks").doc(doc.id).update({ data }),
catch: (error) => console.error(error),
})
);
yield* Effect.all(updateSubtasks, { concurrency: "inherit" });
})
);
const arrayInChunks = Chunk.fromIterable(veryLargeArray).pipe(Chunk.chunksOf(10))
const updateTasks = Effect.forEach(arrayInChunks, (chunk) =>
Effect.gen(function* () {
const querySnapshot = yield* Effect.tryPromise({
try: () => db.collection("tasks").where("taskId", "in", chunk).get(),
catch: (error) => console.error(error),
});
const updateSubtasks = querySnapshot.docs.map((doc) =>
Effect.tryPromise({
try: () => db.collection("subtasks").doc(doc.id).update({ data }),
catch: (error) => console.error(error),
})
);
yield* Effect.all(updateSubtasks, { concurrency: "inherit" });
})
);