32 lines
1.1 KiB
Go
32 lines
1.1 KiB
Go
package controller
|
|
|
|
import (
|
|
"google.golang.org/grpc/codes"
|
|
"google.golang.org/grpc/status"
|
|
"penahub.gitlab.yandexcloud.net/pena-services/accruals-service/internal/repository"
|
|
"penahub.gitlab.yandexcloud.net/pena-services/accruals-service/internal/service"
|
|
)
|
|
|
|
var GRPCStatuses = map[error]codes.Code{
|
|
repository.ErrEmptyArgs: codes.InvalidArgument,
|
|
repository.ErrFindRecord: codes.Internal,
|
|
repository.ErrInsertRecord: codes.Internal,
|
|
repository.ErrInvalidID: codes.InvalidArgument,
|
|
repository.ErrMethodNotImplemented: codes.Unimplemented,
|
|
repository.ErrNoRecord: codes.NotFound,
|
|
repository.ErrTransaction: codes.Internal,
|
|
repository.ErrTransactionSessionStart: codes.Internal,
|
|
repository.ErrUpdateRecord: codes.Internal,
|
|
service.ErrInvalidInputValue: codes.InvalidArgument,
|
|
service.ErrInvalidReturnValue: codes.Internal,
|
|
}
|
|
|
|
func determineError(message string, err error) error {
|
|
currentStatus, ok := GRPCStatuses[err]
|
|
if !ok {
|
|
return status.Errorf(codes.Internal, message, err)
|
|
}
|
|
|
|
return status.Errorf(currentStatus, message, err)
|
|
}
|