// Copyright (c) The OpenTofu Authors
// SPDX-License-Identifier: MPL-2.0
// Copyright (c) 2023 HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0

package tofu

import (
	"context"
	"fmt"
)

// PrefixUIInput is an implementation of UIInput that prefixes the ID
// with a string, allowing queries to be namespaced.
type PrefixUIInput struct {
	IdPrefix    string
	QueryPrefix string
	UIInput     UIInput
}

func (i *PrefixUIInput) Input(ctx context.Context, opts *InputOpts) (string, error) {
	opts.Id = fmt.Sprintf("%s.%s", i.IdPrefix, opts.Id)
	opts.Query = fmt.Sprintf("%s%s", i.QueryPrefix, opts.Query)
	return i.UIInput.Input(ctx, opts)
}
