aboutsummaryrefslogtreecommitdiffstats
path: root/modules/util/error.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/util/error.go')
-rw-r--r--modules/util/error.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/modules/util/error.go b/modules/util/error.go
index 0f3597147c..07fadf3cab 100644
--- a/modules/util/error.go
+++ b/modules/util/error.go
@@ -36,6 +36,22 @@ func (w SilentWrap) Unwrap() error {
return w.Err
}
+type LocaleWrap struct {
+ err error
+ TrKey string
+ TrArgs []any
+}
+
+// Error returns the message
+func (w LocaleWrap) Error() string {
+ return w.err.Error()
+}
+
+// Unwrap returns the underlying error
+func (w LocaleWrap) Unwrap() error {
+ return w.err
+}
+
// NewSilentWrapErrorf returns an error that formats as the given text but unwraps as the provided error
func NewSilentWrapErrorf(unwrap error, message string, args ...any) error {
if len(args) == 0 {
@@ -63,3 +79,16 @@ func NewAlreadyExistErrorf(message string, args ...any) error {
func NewNotExistErrorf(message string, args ...any) error {
return NewSilentWrapErrorf(ErrNotExist, message, args...)
}
+
+// ErrWrapLocale wraps an err with a translation key and arguments
+func ErrWrapLocale(err error, trKey string, trArgs ...any) error {
+ return LocaleWrap{err: err, TrKey: trKey, TrArgs: trArgs}
+}
+
+func ErrAsLocale(err error) *LocaleWrap {
+ var e LocaleWrap
+ if errors.As(err, &e) {
+ return &e
+ }
+ return nil
+}