package steps

import (
	"context"
	"fmt"

	"github.com/pingcap/test-infra/caselib/pkg/utils"
)

type newUniqPath struct {
	originalPath *string
	uniq         string
}

func (n newUniqPath) String() string {
	return fmt.Sprintf("New uniq path based on original path %s and uniq %s", *n.originalPath, n.uniq)
}

func (n newUniqPath) Execute(ctx context.Context) error {
	return utils.RenamePath(n.originalPath, n.uniq)
}

var _ Step = &newUniqPath{}

func NewUniqPath(originalPath *string, uniq string) Step {
	return newUniqPath{originalPath: originalPath, uniq: uniq}
}

func (b *Builder) NewUniqPath(originalPath *string, uniq string) *Builder {
	b.steps = append(b.steps, NewUniqPath(originalPath, uniq))
	return b
}
