1
1
package v1
2
2
3
3
import (
4
+ "context"
5
+ "fmt"
6
+ "net/http"
4
7
"time"
5
8
6
9
"github.com/actiontech/sqle/sqle/api/controller"
10
+ "github.com/actiontech/sqle/sqle/dms"
11
+ "github.com/actiontech/sqle/sqle/errors"
12
+ "github.com/actiontech/sqle/sqle/model"
7
13
"github.com/labstack/echo/v4"
8
14
)
9
15
@@ -25,7 +31,27 @@ type CreateBlacklistReqV1 struct {
25
31
// @Success 200 {object} controller.BaseRes
26
32
// @router /v1/projects/{project_name}/blacklist [post]
27
33
func CreateBlacklist (c echo.Context ) error {
28
- return nil
34
+ req := new (CreateBlacklistReqV1 )
35
+ if err := controller .BindAndValidateReq (c , req ); err != nil {
36
+ return controller .JSONBaseErrorReq (c , err )
37
+ }
38
+
39
+ projectUid , err := dms .GetPorjectUIDByName (context .TODO (), c .Param ("project_name" ), true )
40
+ if err != nil {
41
+ return controller .JSONBaseErrorReq (c , err )
42
+ }
43
+ s := model .GetStorage ()
44
+ err = s .Save (& model.BlackListAuditPlanSQL {
45
+ ProjectId : model .ProjectUID (projectUid ),
46
+ FilterType : model .BlacklistFilterType (req .Type ),
47
+ FilterContent : req .Content ,
48
+ Desc : req .Desc ,
49
+ })
50
+ if err != nil {
51
+ return controller .JSONBaseErrorReq (c , err )
52
+ }
53
+
54
+ return c .JSON (http .StatusOK , controller .NewBaseReq (nil ))
29
55
}
30
56
31
57
// DeleteBlacklist
@@ -38,7 +64,28 @@ func CreateBlacklist(c echo.Context) error {
38
64
// @Success 200 {object} controller.BaseRes
39
65
// @router /v1/projects/{project_name}/blacklist/{blacklist_id}/ [delete]
40
66
func DeleteBlacklist (c echo.Context ) error {
41
- return nil
67
+ blacklistId := c .Param ("blacklist_id" )
68
+
69
+ projectUid , err := dms .GetPorjectUIDByName (context .TODO (), c .Param ("project_name" ))
70
+ if err != nil {
71
+ return controller .JSONBaseErrorReq (c , err )
72
+ }
73
+
74
+ s := model .GetStorage ()
75
+ blacklist , exist , err := s .GetBlacklistByID (model .ProjectUID (projectUid ), blacklistId )
76
+ if err != nil {
77
+ return controller .JSONBaseErrorReq (c , err )
78
+ }
79
+ if ! exist {
80
+ return controller .JSONBaseErrorReq (c , errors .New (errors .DataNotExist ,
81
+ fmt .Errorf ("blacklist is not exist" )))
82
+ }
83
+
84
+ if err := s .Delete (blacklist ); err != nil {
85
+ return controller .JSONBaseErrorReq (c , err )
86
+ }
87
+
88
+ return c .JSON (http .StatusOK , controller .NewBaseReq (nil ))
42
89
}
43
90
44
91
type UpdateBlacklistReqV1 struct {
@@ -60,7 +107,43 @@ type UpdateBlacklistReqV1 struct {
60
107
// @Success 200 {object} controller.BaseRes
61
108
// @router /v1/projects/{project_name}/blacklist/{blacklist_id}/ [patch]
62
109
func UpdateBlacklist (c echo.Context ) error {
63
- return nil
110
+ req := new (UpdateBlacklistReqV1 )
111
+ if err := controller .BindAndValidateReq (c , req ); err != nil {
112
+ return controller .JSONBaseErrorReq (c , err )
113
+ }
114
+
115
+ blacklistId := c .Param ("blacklist_id" )
116
+ projectUid , err := dms .GetPorjectUIDByName (context .TODO (), c .Param ("project_name" ))
117
+ if err != nil {
118
+ return controller .JSONBaseErrorReq (c , err )
119
+ }
120
+
121
+ s := model .GetStorage ()
122
+ blacklist , exist , err := s .GetBlacklistByID (model .ProjectUID (projectUid ), blacklistId )
123
+ if err != nil {
124
+ return controller .JSONBaseErrorReq (c , err )
125
+ }
126
+ if ! exist {
127
+ return controller .JSONBaseErrorReq (c , errors .New (errors .DataNotExist ,
128
+ fmt .Errorf ("blacklist is not exist" )))
129
+ }
130
+
131
+ if req .Content != nil {
132
+ blacklist .FilterContent = * req .Content
133
+ }
134
+ if req .Type != nil {
135
+ blacklist .FilterType = model .BlacklistFilterType (* req .Type )
136
+ }
137
+ if req .Desc != nil {
138
+ blacklist .Desc = * req .Desc
139
+ }
140
+
141
+ err = s .Save (blacklist )
142
+ if err != nil {
143
+ return controller .JSONBaseErrorReq (c , err )
144
+ }
145
+
146
+ return c .JSON (http .StatusOK , controller .NewBaseReq (nil ))
64
147
}
65
148
66
149
type GetBlacklistReqV1 struct {
@@ -99,5 +182,37 @@ type BlacklistResV1 struct {
99
182
// @Success 200 {object} v1.GetBlacklistResV1
100
183
// @router /v1/projects/{project_name}/blacklist [get]
101
184
func GetBlacklist (c echo.Context ) error {
102
- return nil
185
+ req := new (GetBlacklistReqV1 )
186
+ if err := controller .BindAndValidateReq (c , req ); err != nil {
187
+ return controller .JSONBaseErrorReq (c , err )
188
+ }
189
+
190
+ projectUid , err := dms .GetPorjectUIDByName (context .TODO (), c .Param ("project_name" ))
191
+ if err != nil {
192
+ return controller .JSONBaseErrorReq (c , err )
193
+ }
194
+
195
+ s := model .GetStorage ()
196
+ blacklistList , count , err := s .GetBlacklistList (model .ProjectUID (projectUid ), model .BlacklistFilterType (req .FilterType ), req .FuzzySearchContent , req .PageIndex , req .PageSize )
197
+ if err != nil {
198
+ return controller .JSONBaseErrorReq (c , err )
199
+ }
200
+
201
+ res := make ([]* BlacklistResV1 , 0 , len (blacklistList ))
202
+ for _ , blacklist := range blacklistList {
203
+ res = append (res , & BlacklistResV1 {
204
+ BlacklistID : blacklist .ID ,
205
+ Content : blacklist .FilterContent ,
206
+ Desc : blacklist .Desc ,
207
+ Type : string (blacklist .FilterType ),
208
+ MatchedCount : blacklist .MatchedCount ,
209
+ LastMatchTime : blacklist .LastMatchTime ,
210
+ })
211
+ }
212
+
213
+ return c .JSON (http .StatusOK , & GetBlacklistResV1 {
214
+ BaseRes : controller .NewBaseReq (nil ),
215
+ Data : res ,
216
+ TotalNums : count ,
217
+ })
103
218
}
0 commit comments