Do($ => {
const items = $(importPickItems(req.items))
$(
items.batchNPar(
10,
Ship.validateItem,
items =>
PickItems$.update(PickListRepository.logIf(items => ClientEvents.of.PickItemsUpdated({ items })))
.runTerm(items)
.flatMap(([items, events]) => PickListRepository.save(items, events))
)
.withValidationCache
)
})
/**
* @tsplus pipeable Collection batchNPar
* @tsplus static Collection.Aspects batchNPar
*/
export function batchNPar<R, E, A, R2, E2, A2, T>(
n: number,
forEachItem: (i: T) => Effect<R, E, A>,
forEachBatch: (a: Chunk<A>) => Effect<R2, E2, A2>
) {
return (items: Iterable<T>) =>
items.chunk(n)
.forEachEffectPar(_ => _.forEachPar(forEachItem).flatMap(forEachBatch))
}
Do($ => {
const items = $(importPickItems(req.items))
$(
items.batchNPar(
10,
Ship.validateItem,
items =>
PickItems$.update(PickListRepository.logIf(items => ClientEvents.of.PickItemsUpdated({ items })))
.runTerm(items)
.flatMap(([items, events]) => PickListRepository.save(items, events))
)
.withValidationCache
)
})
/**
* @tsplus pipeable Collection batchNPar
* @tsplus static Collection.Aspects batchNPar
*/
export function batchNPar<R, E, A, R2, E2, A2, T>(
n: number,
forEachItem: (i: T) => Effect<R, E, A>,
forEachBatch: (a: Chunk<A>) => Effect<R2, E2, A2>
) {
return (items: Iterable<T>) =>
items.chunk(n)
.forEachEffectPar(_ => _.forEachPar(forEachItem).flatMap(forEachBatch))
}