56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
|
|
package usecase
|
||
|
|
|
||
|
|
import (
|
||
|
|
"errors"
|
||
|
|
"strings"
|
||
|
|
|
||
|
|
errs "gateway/internal/library/errors"
|
||
|
|
"gateway/internal/library/errors/code"
|
||
|
|
"gateway/internal/model/notification"
|
||
|
|
)
|
||
|
|
|
||
|
|
var errb = errs.For(code.Notification)
|
||
|
|
|
||
|
|
func wrapRepoErr(err error, msg ...string) error {
|
||
|
|
if err == nil {
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
if errors.Is(err, notification.ErrNotFound) {
|
||
|
|
return errb.ResNotFound("notification", "").WithCause(err)
|
||
|
|
}
|
||
|
|
if errors.Is(err, notification.ErrInvalidObjectID) {
|
||
|
|
return errb.ResInvalidMeasureID("notification id").WithCause(err)
|
||
|
|
}
|
||
|
|
if errors.Is(err, notification.ErrDuplicateIdempotency) {
|
||
|
|
return errb.ResAlreadyExist("notification idempotency key").WithCause(err)
|
||
|
|
}
|
||
|
|
if errors.Is(err, notification.ErrInvalidChannel) {
|
||
|
|
return errb.InputInvalidFormat("invalid notification channel").WithCause(err)
|
||
|
|
}
|
||
|
|
if errors.Is(err, notification.ErrQuotaExceeded) {
|
||
|
|
return errb.ResInsufficientQuota("notification quota exceeded").WithCause(err)
|
||
|
|
}
|
||
|
|
if e := errs.FromError(err); e != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
m := strings.TrimSpace(strings.Join(msg, " "))
|
||
|
|
if m == "" {
|
||
|
|
m = "notification repository error"
|
||
|
|
}
|
||
|
|
return errb.DBError(m).WithCause(err)
|
||
|
|
}
|
||
|
|
|
||
|
|
func wrapStoreErr(err error, msg ...string) error {
|
||
|
|
if err == nil {
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
if e := errs.FromError(err); e != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
m := strings.TrimSpace(strings.Join(msg, " "))
|
||
|
|
if m == "" {
|
||
|
|
m = "notification store error"
|
||
|
|
}
|
||
|
|
return errb.DBError(m).WithCause(err)
|
||
|
|
}
|