//nolint:gomnd
package snapshot

import (
	"github.com/shiningrush/fastflow/pkg/entity"
	"github.com/shiningrush/fastflow/pkg/entity/run"
	"github.com/tidbcloud/dataflow-service/app/container"
	"github.com/tidbcloud/dataflow-service/app/workflow"
	backup_base "github.com/tidbcloud/dataflow-service/app/workflow/action/backup/base"
	backup_delete "github.com/tidbcloud/dataflow-service/app/workflow/action/backup/snapshot/del"
)

func GetCleanStorageDag() (*entity.Dag, []run.Action) {
	base := backup_base.NewBaseAction(
		container.Global().TransProvider,
		container.Global().BackupRepo,
		container.Global().BackupScheduleRepo,
		container.Global().LogBackupRepo,
		container.Global().BackupRegionalFacade,
		container.Global().ClusterJobModel,
		container.Global().MgmtSvcGrpcClient,
		container.Global().PitBackupSwitchRepo,
		container.Global().FeatureGate,
	)

	actions := []run.Action{
		backup_delete.NewCleanStorageAction(base, container.Global().Encryptor, container.Global().BucketRepo),
	}

	dag := &entity.Dag{
		BaseInfo: entity.BaseInfo{
			ID: workflow.DagCleanupSnapshotBackupStorage,
		},
		Name: workflow.DagCleanupSnapshotBackupStorage,
		Vars: entity.DagVars{
			workflow.KeyBackupID: {},
		},
		Status: entity.DagStatusNormal,
		Tasks: []entity.Task{
			{
				ID:          workflow.ActionCleanSnapshotBackupStorage,
				ActionName:  workflow.ActionCleanSnapshotBackupStorage,
				TimeoutSecs: 3 * 24 * 60 * 60,
			},
		},
	}
	return dag, actions
}
