alby-hub/nip47/controllers/map_nip47_error.go

33 lines
825 B
Go

package controllers
import (
"errors"
"github.com/getAlby/hub/constants"
"github.com/getAlby/hub/nip47/models"
"github.com/getAlby/hub/transactions"
"gorm.io/gorm"
)
func mapNip47Error(err error) *models.Error {
code := constants.ERROR_INTERNAL
message := err.Error()
if errors.Is(err, transactions.NewNotFoundError()) {
code = constants.ERROR_NOT_FOUND
}
if errors.Is(err, transactions.NewInsufficientBalanceError()) {
code = constants.ERROR_INSUFFICIENT_BALANCE
}
if errors.Is(err, transactions.NewQuotaExceededError()) {
code = constants.ERROR_QUOTA_EXCEEDED
}
if errors.Is(err, gorm.ErrDuplicatedKey) {
// avoid leaking raw driver/SQL error details (e.g. constraint names) to NWC apps
message = gorm.ErrDuplicatedKey.Error()
}
return &models.Error{
Code: code,
Message: message,
}
}