package service

import (
	"errors"

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

var (
	ErrHandlerPaused  = errors.New("handler paused")
	ErrBadRequest     = errors.New("bad request")
	ErrNotImplemented = errors.New("not implemented")
)

// scalerError converts regular error to error in pb with appropriate error type.
func scalerError(err error) *scalerpb.Error {
	if err == nil {
		return nil
	}

	errType := scalerpb.ErrorType_UNKNOWN
	if errors.Is(err, ErrHandlerPaused) {
		errType = scalerpb.ErrorType_PAUSED
	}

	return &scalerpb.Error{
		Type:    errType,
		Message: err.Error(),
	}
}

// scalerResponse returns the basic scaler response.
func scalerResponse(err error) *scalerpb.Response {
	return &scalerpb.Response{
		Error: scalerError(err),
	}
}
