#pragma once #include #include #include #include #include #include #include struct StepGraph { struct Step { std::vector> downstream_dependencies; std::vector> upstream_dependencies; std::function execute; uint64_t last_run_id = 0; }; std::unordered_map> steps; uint64_t last_run_id = 0; StepGraph() = default; void add_step(const std::string& name, const std::vector& depends_on_names, std::function&& execute); void run(const std::string& start_step, bool run_upstreams); void run(const std::vector& start_steps, bool run_upstreams); };