package grpc

import (
	"context"
	"net/http"

	tierrs "github.com/tidbcloud/tiinf/errs"
	"go.buf.build/protocolbuffers/go/linuxgit/tidbcloud/base"
)

// FormatError formats the error from grpc response, and returns the error
func FormatError(ctx context.Context, err error, baseResp *base.BaseResp) error {
	if err != nil {
		return tierrs.NewInternalGRPC("call gprc endpoint failed", err)
	}
	if baseResp == nil || baseResp.ErrCode == 0 {
		return nil
	}
	tierr := tierrs.GetTiErrFromBaseResp(baseResp)
	if tierr.HTTPCode() != http.StatusInternalServerError {
		return tierr
	}
	return tierrs.ParseBaseResp(ctx, baseResp)
}
