func FromGRPC(s *status.Status) error {
	if s == nil || s.Code() == codes.OK {
		return nil
	}
	switch s.Code() {
	case codes.InvalidArgument:
		return strongerrors.InvalidArgument(s.Err())
	case codes.NotFound:
		return strongerrors.NotFound(s.Err())
	case codes.Unimplemented:
		return strongerrors.NotImplemented(s.Err())
	case codes.DeadlineExceeded:
		return strongerrors.Deadline(s.Err())
	case codes.Canceled:
		return strongerrors.Cancelled(s.Err())
	case codes.AlreadyExists:
		return strongerrors.AlreadyExists(s.Err())
	case codes.PermissionDenied:
		return strongerrors.Unauthorized(s.Err())
	case codes.Unauthenticated:
		return strongerrors.Unauthenticated(s.Err())
	case codes.FailedPrecondition, codes.Aborted, codes.Unavailable, codes.OutOfRange:
		return strongerrors.Conflict(s.Err())
	case codes.ResourceExhausted:
		return strongerrors.Exhausted(s.Err())
	case codes.DataLoss:
		return strongerrors.DataLoss(s.Err())
	default:
		return strongerrors.Unknown(s.Err())
	}
}
FromGRPC returns an error class from the provided GPRC status
If the status is nil or OK, this will return nil
nolint: gocyclo
package status
import (
	"github.com/cpuguy83/strongerrors"
	"google.golang.org/grpc/codes"
	"google.golang.org/grpc/status"
)