package data_pipeline

import (
	"github.com/shiningrush/fastflow/pkg/entity"
	"github.com/shiningrush/fastflow/pkg/entity/run"
	data_pipeline_model "github.com/tidbcloud/dataflow-service-ng/app/models/data_pipeline"
	"github.com/tidbcloud/dataflow-service-ng/app/workflow"
	data_pipeline_action "github.com/tidbcloud/dataflow-service-ng/app/workflow/action/data_pipeline"
)

func GetResumeDataPipelineDag(
	coordinator data_pipeline_model.LifecycleCoordinator,
) (*entity.Dag, []run.Action) {
	// Applying the desired revision is the Edit DAG's job. By the time a
	// Pipeline can be resumed its children already hold the applied
	// configuration, so Resume only starts them, destination first.
	actions := []run.Action{
		data_pipeline_action.NewResumeDestinationAction(coordinator),
		data_pipeline_action.NewResumeChangefeedAction(coordinator),
		data_pipeline_action.NewFinishResumeAction(coordinator),
	}
	return buildLinearDag(workflow.DagResumeDataPipeline, actions)
}
