package secretsource

import (
	"context"
	"fmt"

	"github.com/tidbcloud/devops/pkg/infra/config"
)

type SecretSource interface {
	GetSecretValue(ctx context.Context, name string) (string, error)
}

func NewSecretSource(conf config.SecretSource) (SecretSource, error) {
	if conf.AWSASM != nil {
		return NewAWSASMSecretSource(*conf.AWSASM)
	}

	if conf.AliyunKMS != nil {
		return NewSourceAliyunKMS(*conf.AliyunKMS)
	}

	if conf.AliyunOSS != nil {
		return NewSourceAliyunOSS(*conf.AliyunOSS)
	}

	return nil, fmt.Errorf("no support secret source")
}
