package dag

import (
	flowentity "github.com/tidbcloud/fastflow/pkg/entity"

	"github.com/tidbcloud/tidb-management-service/tidb-mgmt-service/domain/constant"
	"github.com/tidbcloud/tidb-management-service/utilities/workflow"
)

func DeleteNextGenClusterDag() *flowentity.Dag {
	dag := &flowentity.Dag{
		BaseInfo: flowentity.BaseInfo{
			ID: constant.DagNextGenDeleteCluster,
		},
		Name:   constant.DagNextGenDeleteCluster,
		Status: flowentity.DagStatusNormal,
		Vars: map[string]flowentity.DagVar{
			constant.KeyRequest:                   {},
			constant.KeyFinalBackup:               {},
			constant.KeyResourcePoolID:            {},
			constant.KeyOrganizationID:            {},
			constant.KeyServicePlan:               {},
			constant.KeyDeleteResourcePoolIfEmpty: {},
			workflow.KeyTraceId:                   {},
			workflow.KeySpanName:                  {},
			workflow.KeyRequestMeta:               {},
		},
		Tasks: []flowentity.Task{
			{
				ID:         constant.TaskNextGenFinalBackup,
				ActionName: constant.TaskNextGenFinalBackup,
			},
			{
				ID:         constant.TaskNextGenGlobalStopRestoreIfExists,
				ActionName: constant.TaskNextGenGlobalStopRestoreIfExists,
				DependOn:   []string{constant.TaskNextGenFinalBackup},
			},
			{
				ID:         constant.TaskNextGenGlobalDeleteCluster,
				ActionName: constant.TaskNextGenGlobalDeleteCluster,
				DependOn:   []string{constant.TaskNextGenGlobalStopRestoreIfExists},
			},
			{
				ID:         constant.TaskNextGenDeleteResourcePoolIfEmpty,
				ActionName: constant.TaskNextGenDeleteResourcePoolIfEmpty,
				DependOn:   []string{constant.TaskNextGenGlobalDeleteCluster},
			},
		},
	}

	return dag
}
