template-monorepo/internal/model/auth/usecase/errors.go

48 lines
1.3 KiB
Go
Raw Normal View History

package usecase
import (
"errors"
"strings"
errs "gateway/internal/library/errors"
"gateway/internal/library/errors/code"
authdomain "gateway/internal/model/auth/domain"
)
var errb = errs.For(code.Auth)
func wrapRepoErr(err error, msg ...string) error {
if err == nil {
return nil
}
if errors.Is(err, authdomain.ErrInviteNotFound) {
return errb.ResNotFound("invite", "").WithCause(err)
}
if errors.Is(err, authdomain.ErrInviteExpired) {
return errb.InputInvalidFormat("invite code expired").WithCause(err)
}
if errors.Is(err, authdomain.ErrInviteExhausted) {
return errb.ResInsufficientQuota("invite code exhausted").WithCause(err)
}
if errors.Is(err, authdomain.ErrInviteLocked) {
return errb.ResLocked("invite consume in progress").WithCause(err)
}
if errors.Is(err, authdomain.ErrDuplicateRegistrationMeta) {
return errb.ResAlreadyExist("registration metadata already exists").WithCause(err)
}
if errors.Is(err, authdomain.ErrRegistrationSessionNotFound) {
return errb.ResNotFound("registration session", "").WithCause(err)
}
if errors.Is(err, authdomain.ErrLoginSessionNotFound) {
return errb.ResNotFound("login session", "").WithCause(err)
}
if e := errs.FromError(err); e != nil {
return err
}
m := strings.TrimSpace(strings.Join(msg, " "))
if m == "" {
m = "auth repository error"
}
return errb.DBError(m).WithCause(err)
}