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 GetCreateDataPipelineDag(
	coordinator data_pipeline_model.LifecycleCoordinator,
) (*entity.Dag, []run.Action) {
	actions := []run.Action{
		data_pipeline_action.NewCreateExportAction(coordinator),
		data_pipeline_action.NewCreateChangefeedAction(coordinator),
		data_pipeline_action.NewWaitSnapshotReadyAction(coordinator),
		data_pipeline_action.NewCreateDestinationAction(coordinator),
		data_pipeline_action.NewStartDestinationAction(coordinator),
		data_pipeline_action.NewFinishCreateAction(coordinator),
	}
	return buildLinearDag(workflow.DagCreateDataPipeline, actions)
}
