Skip to main content

src/webql/runner/run_batch.gleam

import gleam/list
import webql/assembler/plan
import webql/engine
import webql/memory
import webql/runner/run_step

/// Runs the next batch in a plan.
pub fn run(
  batch: List(plan.Step(task)),
  edges: List(plan.Edge),
  engine: engine.Engine(task, memory.Memory(storage), error),
  memory: memory.Memory(storage),
  run_plan,
) -> task {
  let steps =
    engine.handle_start_batch(fn() {
      Ok(
        list.map(batch, fn(step) {
          run_step.run(step, edges, engine, memory, run_plan)
        }),
      )
    })

  engine.handle_finish_batch(memory, steps, memory.merge)
}