package manualaction

import (
	"context"

	opent "github.com/tidbcloud/devops/entity/operation"
	"github.com/tidbcloud/devops/pkg/service/operation/actions"
)

var (
	ActionPerformOperation opent.ActionMetadata = opent.ActionMetadata{
		Name: "PerformOperation",
		Type: opent.ActionTypeManual,
	}
)

func NewPerformOperation(comps *actions.Components) actions.MaunalAction {
	return &performOperation{comps: comps}
}

type performOperation struct {
	actions.BaseAction
	comps *actions.Components
}

func (a *performOperation) Metadata() opent.ActionMetadata {
	return ActionPerformOperation
}

func (a *performOperation) PreCheck(ctx context.Context, instance *opent.Instance) error {
	return nil
}

func (a *performOperation) Start(ctx context.Context, instance *opent.Instance) (*actions.ActionResult, error) {
	return actions.RunningActionResult("performing operations", nil), nil // return running and wait for oncaller to finish it.
}

func (a *performOperation) OnFinish(ctx context.Context, instance *opent.Instance, result opent.ActionStatus, output string) error {
	return nil
}
