package integration

import (
	"context"

	"github.com/pingcap/errcode"
	"github.com/pingcap/errors"
	consolev1 "github.com/tidbcloud/metrics-integration/global/api/integration/v1"
	"github.com/tidbcloud/metrics-integration/global/internal/domain/controller/integration"
	"github.com/tidbcloud/metrics-integration/global/pkg/cvt"
)

func (i integrationServiceServer) ValidateNewrelicAPIKey(ctx context.Context, req *consolev1.ValidateNewrelicAPIKeyRequest) (*consolev1.ValidateNewrelicAPIKeyResp, error) {
	v, err := integration.ValidateNewrelicAPIKey(ctx, req.NewrelicApiKey, cvt.NewrelicSiteConsoleAPIToDB(req.NewrelicSite))
	if err != nil {
		err = errcode.NewInternalErr(errors.Annotate(err, "validate newrelic api key failed"))
		return nil, err
	}
	resp := &consolev1.ValidateNewrelicAPIKeyResp{
		OrgId: req.OrgId,
		Valid: v,
	}
	return resp, nil
}
