@@ -3,13 +3,14 @@ package cluster
33import (
44 "github.com/0xJacky/Nginx-UI/api"
55 "github.com/0xJacky/Nginx-UI/internal/analytic"
6- "github.com/0xJacky/Nginx-UI/internal/environment"
6+ "github.com/0xJacky/Nginx-UI/internal/cluster"
7+ "github.com/0xJacky/Nginx-UI/internal/cosy"
78 "github.com/0xJacky/Nginx-UI/model"
89 "github.com/0xJacky/Nginx-UI/query"
10+ "github.com/0xJacky/Nginx-UI/settings"
911 "github.com/gin-gonic/gin"
1012 "github.com/spf13/cast"
1113 "net/http"
12- "regexp"
1314)
1415
1516func GetEnvironment (c * gin.Context ) {
@@ -27,117 +28,68 @@ func GetEnvironment(c *gin.Context) {
2728}
2829
2930func GetEnvironmentList (c * gin.Context ) {
30- data , err := environment .RetrieveEnvironmentList ()
31- if err != nil {
32- api .ErrHandler (c , err )
33- return
34- }
35- c .JSON (http .StatusOK , gin.H {
36- "data" : data ,
37- })
38- }
39-
40- type EnvironmentManageJson struct {
41- Name string `json:"name" binding:"required"`
42- URL string `json:"url" binding:"required"`
43- Token string `json:"token" binding:"required"`
44- OperationSync bool `json:"operation_sync"`
45- SyncApiRegex string `json:"sync_api_regex"`
46- }
47-
48- func validateRegex (data EnvironmentManageJson ) error {
49- if data .OperationSync {
50- _ , err := regexp .Compile (data .SyncApiRegex )
51- return err
52- }
53- return nil
31+ cosy.Core [model.Environment ](c ).
32+ SetFussy ("name" ).
33+ SetEqual ("enabled" ).
34+ SetTransformer (func (m * model.Environment ) any {
35+ return analytic .GetNode (m )
36+ }).PagingList ()
5437}
5538
5639func AddEnvironment (c * gin.Context ) {
57- var json EnvironmentManageJson
58- if ! api .BindAndValid (c , & json ) {
59- return
60- }
61- if err := validateRegex (json ); err != nil {
62- api .ErrHandler (c , err )
63- return
64- }
65-
66- env := model.Environment {
67- Name : json .Name ,
68- URL : json .URL ,
69- Token : json .Token ,
70- OperationSync : json .OperationSync ,
71- SyncApiRegex : json .SyncApiRegex ,
72- }
73-
74- envQuery := query .Environment
75-
76- err := envQuery .Create (& env )
77- if err != nil {
78- api .ErrHandler (c , err )
79- return
80- }
81-
82- go analytic .RestartRetrieveNodesStatus ()
83-
84- c .JSON (http .StatusOK , env )
40+ cosy.Core [model.Environment ](c ).SetValidRules (gin.H {
41+ "name" : "required" ,
42+ "url" : "required,url" ,
43+ "token" : "required" ,
44+ "enabled" : "omitempty,boolean" ,
45+ }).ExecutedHook (func (c * cosy.Ctx [model.Environment ]) {
46+ go analytic .RestartRetrieveNodesStatus ()
47+ }).Create ()
8548}
8649
8750func EditEnvironment (c * gin.Context ) {
88- id := cast .ToInt (c .Param ("id" ))
89-
90- var json EnvironmentManageJson
91- if ! api .BindAndValid (c , & json ) {
92- return
93- }
94- if err := validateRegex (json ); err != nil {
95- api .ErrHandler (c , err )
96- return
97- }
51+ cosy.Core [model.Environment ](c ).SetValidRules (gin.H {
52+ "name" : "required" ,
53+ "url" : "required,url" ,
54+ "token" : "required" ,
55+ "enabled" : "omitempty,boolean" ,
56+ }).ExecutedHook (func (c * cosy.Ctx [model.Environment ]) {
57+ go analytic .RestartRetrieveNodesStatus ()
58+ }).Modify ()
59+ }
9860
61+ func DeleteEnvironment (c * gin.Context ) {
62+ id := cast .ToInt (c .Param ("id" ))
9963 envQuery := query .Environment
10064
10165 env , err := envQuery .FirstByID (id )
10266 if err != nil {
10367 api .ErrHandler (c , err )
10468 return
10569 }
106-
107- _ , err = envQuery .Where (envQuery .ID .Eq (env .ID )).Updates (& model.Environment {
108- Name : json .Name ,
109- URL : json .URL ,
110- Token : json .Token ,
111- OperationSync : json .OperationSync ,
112- SyncApiRegex : json .SyncApiRegex ,
113- })
114-
70+ err = envQuery .DeleteByID (env .ID )
11571 if err != nil {
11672 api .ErrHandler (c , err )
11773 return
11874 }
11975
12076 go analytic .RestartRetrieveNodesStatus ()
12177
122- GetEnvironment ( c )
78+ c . JSON ( http . StatusNoContent , nil )
12379}
12480
125- func DeleteEnvironment (c * gin.Context ) {
126- id := cast .ToInt (c .Param ("id" ))
127- envQuery := query .Environment
128-
129- env , err := envQuery .FirstByID (id )
130- if err != nil {
131- api .ErrHandler (c , err )
132- return
133- }
134- err = envQuery .DeleteByID (env .ID )
81+ func LoadEnvironmentFromSettings (c * gin.Context ) {
82+ err := settings .ReloadCluster ()
13583 if err != nil {
13684 api .ErrHandler (c , err )
13785 return
13886 }
13987
88+ cluster .RegisterPredefinedNodes ()
89+
14090 go analytic .RestartRetrieveNodesStatus ()
14191
142- c .JSON (http .StatusNoContent , nil )
92+ c .JSON (http .StatusOK , gin.H {
93+ "message" : "ok" ,
94+ })
14395}
0 commit comments