package dag

import (
	appworkflow "github.com/tidbcloud/serverless-service/internal/workflow"
	changefeeddag "github.com/tidbcloud/serverless-service/internal/workflow/dag/changefeed"
)

func NewRegistrar(
	workflowModel appworkflow.Workflow,
	hook appworkflow.CDCNewArchHook,
) (*appworkflow.Registrar, error) {
	if err := registerDags(workflowModel, hook); err != nil {
		return nil, err
	}
	return &appworkflow.Registrar{}, nil
}

func registerDags(
	workflowModel appworkflow.Workflow,
	hook appworkflow.CDCNewArchHook,
) error {
	createDag, createActions := changefeeddag.GetCreateChangefeedDag(hook)
	if err := workflowModel.RegisterDag(createDag, createActions); err != nil {
		return err
	}
	scaleDag, scaleActions := changefeeddag.GetScaleClusterDag(hook)
	if err := workflowModel.RegisterDag(scaleDag, scaleActions); err != nil {
		return err
	}
	deleteDag, deleteActions := changefeeddag.GetDeleteChangefeedDag(workflowModel, hook)
	if err := workflowModel.RegisterDag(deleteDag, deleteActions); err != nil {
		return err
	}
	return nil
}
