@@ -17,23 +17,18 @@ type UserHandler interface {
17
17
Delete (w http.ResponseWriter , r * http.Request )
18
18
}
19
19
20
- func NewUserHandler (find func (context.Context , interface {}, interface {}, int64 , ... int64 ) (int64 , string , error ), service UserService , status sv.StatusConfig , validate func (ctx context.Context , model interface {}) ([]sv.ErrorMessage , error ), logError func (context. Context , string ) ) UserHandler {
20
+ func NewUserHandler (find func (context.Context , interface {}, interface {}, int64 , ... int64 ) (int64 , string , error ), service UserService , status sv.StatusConfig , logError func (context. Context , string ), validate func (ctx context.Context , model interface {}) ([]sv.ErrorMessage , error ), action * sv. ActionConfig ) UserHandler {
21
21
searchModelType := reflect .TypeOf (UserFilter {})
22
22
modelType := reflect .TypeOf (User {})
23
- keys , indexes , _ := sv .BuildHandlerParams (modelType )
24
- searchHandler := search .NewJSONSearchHandler (find , modelType , searchModelType , logError , nil )
25
- return & userHandler {SearchHandler : searchHandler , service : service , keys : keys , indexes : indexes , modelType : modelType , Status : status , Validate : validate , Error : logError }
23
+ params := sv .CreateParams (modelType , & status , logError , validate , action )
24
+ searchHandler := search .NewSearchHandler (find , modelType , searchModelType , logError , params . Log )
25
+ return & userHandler {service : service , SearchHandler : searchHandler , Params : params }
26
26
}
27
27
28
28
type userHandler struct {
29
+ service UserService
29
30
* search.SearchHandler
30
- service UserService
31
- keys []string
32
- indexes map [string ]int
33
- modelType reflect.Type
34
- Status sv.StatusConfig
35
- Validate func (ctx context.Context , model interface {}) ([]sv.ErrorMessage , error )
36
- Error func (context.Context , string )
31
+ * sv.Params
37
32
}
38
33
39
34
func (h * userHandler ) Load (w http.ResponseWriter , r * http.Request ) {
@@ -48,38 +43,38 @@ func (h *userHandler) Create(w http.ResponseWriter, r *http.Request) {
48
43
er1 := sv .Decode (w , r , & user )
49
44
if er1 == nil {
50
45
errors , er2 := h .Validate (r .Context (), & user )
51
- if ! sv .HasError (w , r , errors , er2 , * h .Status .ValidationError , h .Error , nil ) {
46
+ if ! sv .HasError (w , r , errors , er2 , * h .Status .ValidationError , h .Error , h . Log , h . Resource , h . Action . Create ) {
52
47
result , er3 := h .service .Create (r .Context (), & user )
53
- sv .AfterCreated (w , r , & user , result , er3 , h .Status , h .Error , nil )
48
+ sv .AfterCreated (w , r , & user , result , er3 , h .Status , h .Error , h . Log , h . Resource , h . Action . Create )
54
49
}
55
50
}
56
51
}
57
52
func (h * userHandler ) Update (w http.ResponseWriter , r * http.Request ) {
58
53
var user User
59
- er1 := sv .DecodeAndCheckId (w , r , & user , h .keys , h .indexes )
54
+ er1 := sv .DecodeAndCheckId (w , r , & user , h .Keys , h .Indexes )
60
55
if er1 == nil {
61
56
errors , er2 := h .Validate (r .Context (), & user )
62
- if ! sv .HasError (w , r , errors , er2 , * h .Status .ValidationError , h .Error , nil ) {
57
+ if ! sv .HasError (w , r , errors , er2 , * h .Status .ValidationError , h .Error , h . Log , h . Resource , h . Action . Update ) {
63
58
result , er3 := h .service .Update (r .Context (), & user )
64
- sv .HandleResult (w , r , & user , result , er3 , h .Status , h .Error , nil )
59
+ sv .HandleResult (w , r , & user , result , er3 , h .Status , h .Error , h . Log , h . Resource , h . Action . Update )
65
60
}
66
61
}
67
62
}
68
63
func (h * userHandler ) Patch (w http.ResponseWriter , r * http.Request ) {
69
64
var user User
70
- r , json , er1 := sv .BuildMapAndCheckId (w , r , & user , h .keys , h .indexes )
65
+ r , json , er1 := sv .BuildMapAndCheckId (w , r , & user , h .Keys , h .Indexes )
71
66
if er1 == nil {
72
67
errors , er2 := h .Validate (r .Context (), & user )
73
- if ! sv .HasError (w , r , errors , er2 , * h .Status .ValidationError , h .Error , nil ) {
68
+ if ! sv .HasError (w , r , errors , er2 , * h .Status .ValidationError , h .Error , h . Log , h . Resource , h . Action . Patch ) {
74
69
result , er3 := h .service .Patch (r .Context (), json )
75
- sv .HandleResult (w , r , json , result , er3 , h .Status , h .Error , nil )
70
+ sv .HandleResult (w , r , json , result , er3 , h .Status , h .Error , h . Log , h . Resource , h . Action . Patch )
76
71
}
77
72
}
78
73
}
79
74
func (h * userHandler ) Delete (w http.ResponseWriter , r * http.Request ) {
80
75
id := sv .GetRequiredParam (w , r )
81
76
if len (id ) > 0 {
82
77
result , err := h .service .Delete (r .Context (), id )
83
- sv .HandleDelete (w , r , result , err , h .Error , nil )
78
+ sv .HandleDelete (w , r , result , err , h .Error , h . Log , h . Resource , h . Action . Delete )
84
79
}
85
80
}
0 commit comments