package clientv2

import (
	"github.com/pingcap/errors"
	scalerpb "github.com/tidbcloud/aws-shared-provider/pkg/tidbworker/proto/scaler"
)

var ErrHandlerPaused = errors.New("handler paused")

type scalerResp interface {
	// GetError returns the error.
	GetError() *scalerpb.Error
}

// getError returns the appropriate error according to grpc error and server response.
func getError(label string, grpcErr error, resp scalerResp) error {
	if grpcErr != nil {
		return grpcErr
	}
	if resp.GetError() != nil && resp.GetError().GetType() != scalerpb.ErrorType_OK {
		return errors.Errorf("%s failed: %s, error type: %s",
			label, resp.GetError().GetMessage(), resp.GetError().GetType())
	}
	return nil
}

// requestHeader returns the appropriated request header based on client information.
func requestHeader(c *client) *scalerpb.RequestHeader {
	return &scalerpb.RequestHeader{
		KeyspaceName: c.keyspaceName,
		KeyspaceId:   c.KeyspaceID,
		TidbPool:     c.tidbPool,
	}
}
