...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package cerr
17
18 import (
19 "reflect"
20
21 "github.com/pkg/errors"
22 )
23
24 type errHelper struct {
25 inner error
26 }
27
28 func FromErr(err error) *errHelper {
29 return &errHelper{inner: err}
30 }
31
32 func (h *errHelper) Err() error {
33 return h.inner
34 }
35
36 func NotType[expected any]() *errHelper {
37 var exp expected
38 return &errHelper{inner: errors.Errorf("expected type: %T", exp)}
39 }
40
41 func NotImpl[expected any]() *errHelper {
42 var exp *expected
43 return &errHelper{inner: errors.Errorf("not implement %v", reflect.TypeOf(exp).Elem())}
44 }
45
46 func NotFoundType[in any]() *errHelper {
47 var i in
48 return &errHelper{inner: errors.Errorf("not found type: %T", i)}
49 }
50
51 func NotInit[in any]() *errHelper {
52 var i in
53 return &errHelper{inner: errors.Errorf("not init %T", i)}
54 }
55
56 func NotFound(name string) *errHelper {
57 return &errHelper{errors.Errorf("%s not found", name)}
58 }
59
60 func (h *errHelper) WrapInput(in any) *errHelper {
61 return &errHelper{inner: errors.Wrapf(h.inner, "input type: %T, input value: %v", in, in)}
62 }
63
64 func (h *errHelper) WrapValue(in any) *errHelper {
65 return &errHelper{inner: errors.Wrapf(h.inner, "input value: %v", in)}
66 }
67
68 func (h *errHelper) WrapName(name string) *errHelper {
69 return &errHelper{inner: errors.Wrapf(h.inner, "%s", name)}
70 }
71
72 func (h *errHelper) WrapErr(err error) *errHelper {
73 return &errHelper{inner: errors.Wrapf(h.inner, "err : %s", err)}
74 }
75
76 func (h errHelper) Wrapf(format string, args ...interface{}) *errHelper {
77 return &errHelper{inner: errors.Wrapf(h.inner, format, args...)}
78 }
79
80 func (h *errHelper) WithStack() *errHelper {
81 return &errHelper{inner: errors.WithStack(h.inner)}
82 }
83
84 var (
85 ErrDuplicateEntity = errors.New("duplicate entity")
86 )
87