1
1
package chart
2
2
3
3
import (
4
- "errors"
5
- "github.com/KubeOperator/kubepi/internal/api/v1/session"
6
- "github.com/KubeOperator/kubepi/internal/server"
7
4
"github.com/KubeOperator/kubepi/internal/service/v1/chart"
8
- "github.com/KubeOperator/kubepi/internal/service/v1/common"
9
5
pkgV1 "github.com/KubeOperator/kubepi/pkg/api/v1"
10
- "github.com/asdine/storm/v3"
11
6
"github.com/kataras/iris/v12"
12
7
"github.com/kataras/iris/v12/context"
8
+ "strings"
13
9
)
14
10
15
11
type Handler struct {
@@ -22,109 +18,32 @@ func NewHandler() *Handler {
22
18
}
23
19
}
24
20
25
- func (h * Handler ) SearchCharts () iris.Handler {
21
+ func (h * Handler ) DeleteRepo () iris.Handler {
26
22
return func (ctx * context.Context ) {
27
- pageNum , _ := ctx .Values ().GetInt (pkgV1 .PageNum )
28
- pageSize , _ := ctx .Values ().GetInt (pkgV1 .PageSize )
29
- pattern := ctx .URLParam ("pattern" )
30
23
cluster := ctx .URLParam ("cluster" )
31
- charts , total , err := h .chartService .Search (pageNum , pageSize , cluster , pattern , common.DBOptions {})
32
- if err != nil {
33
- if ! errors .Is (err , storm .ErrNotFound ) {
34
- ctx .StatusCode (iris .StatusInternalServerError )
35
- ctx .Values ().Set ("message" , err .Error ())
36
- return
37
- }
38
- }
39
- cs := make ([]Chart , 0 )
40
- for i := range charts {
41
- cs = append (cs , Chart {
42
- Chart : charts [i ],
43
- })
44
- }
45
- ctx .Values ().Set ("data" , pkgV1.Page {Items : cs , Total : total })
46
- }
47
- }
48
-
49
- func (h * Handler ) CreateChart () iris.Handler {
50
- return func (ctx * context.Context ) {
51
- var req Chart
52
- if err := ctx .ReadJSON (& req ); err != nil {
53
- ctx .StatusCode (iris .StatusBadRequest )
54
- ctx .Values ().Set ("message" , err .Error ())
55
- return
56
- }
57
- u := ctx .Values ().Get ("profile" )
58
- profile := u .(session.UserProfile )
59
- //tx
60
- tx , err := server .DB ().Begin (true )
61
- if err != nil {
62
- ctx .StatusCode (iris .StatusInternalServerError )
63
- ctx .Values ().Set ("message" , err .Error ())
64
- return
65
- }
66
- req .CreatedBy = profile .Name
67
- if err := h .chartService .Create (& req .Chart , common.DBOptions {DB : tx }); err != nil {
68
- _ = tx .Rollback ()
69
- ctx .StatusCode (iris .StatusInternalServerError )
70
- ctx .Values ().Set ("message" , err .Error ())
71
- return
72
- }
73
- _ = tx .Commit ()
74
- ctx .Values ().Set ("data" , req )
75
- }
76
- }
77
-
78
- func (h * Handler ) DeleteChart () iris.Handler {
79
- return func (ctx * context.Context ) {
80
- tx , _ := server .DB ().Begin (true )
81
- txOptions := common.DBOptions {DB : tx }
82
-
83
24
name := ctx .Params ().GetString ("name" )
84
- if err := h .chartService .Delete (name , txOptions ); err != nil {
85
- _ = tx .Rollback ()
25
+ if err := h .chartService .RemoveRepo (cluster , name ); err != nil {
86
26
ctx .StatusCode (iris .StatusInternalServerError )
87
27
ctx .Values ().Set ("message" , err .Error ())
88
28
return
89
29
}
90
- _ = tx .Commit ()
91
30
}
92
31
}
93
32
94
33
func (h * Handler ) GetChart () iris.Handler {
95
34
return func (ctx * context.Context ) {
96
- name := ctx .Params ().GetString ("name" )
97
- c , err := h .chartService .GetByName (name , common.DBOptions {})
98
- if err != nil {
99
- ctx .StatusCode (iris .StatusInternalServerError )
100
- ctx .Values ().Set ("message" , err .Error ())
101
- return
102
- }
103
- ctx .Values ().Set ("data" , & Chart {Chart : * c })
35
+ // name := ctx.Params().GetString("name")
36
+ // c, err := h.chartService.GetByName(name, common.DBOptions{})
37
+ // if err != nil {
38
+ // ctx.StatusCode(iris.StatusInternalServerError)
39
+ // ctx.Values().Set("message", err.Error())
40
+ // return
41
+ // }
42
+ // ctx.Values().Set("data", &Chart{Chart: *c})
104
43
}
105
44
}
106
45
func (h * Handler ) UpdateChart () iris.Handler {
107
46
return func (ctx * context.Context ) {
108
- name := ctx .Params ().GetString ("name" )
109
- var req Chart
110
- if err := ctx .ReadJSON (& req ); err != nil {
111
- ctx .StatusCode (iris .StatusBadRequest )
112
- ctx .Values ().Set ("message" , err .Error ())
113
- }
114
- tx , err := server .DB ().Begin (true )
115
- if err != nil {
116
- ctx .StatusCode (iris .StatusInternalServerError )
117
- ctx .Values ().Set ("message" , err .Error ())
118
- return
119
- }
120
- if err := h .chartService .Update (name , & req .Chart , common.DBOptions {DB : tx }); err != nil {
121
- _ = tx .Rollback ()
122
- ctx .StatusCode (iris .StatusInternalServerError )
123
- ctx .Values ().Set ("message" , err .Error ())
124
- return
125
- }
126
- _ = tx .Commit ()
127
- ctx .Values ().Set ("data" , & req )
128
47
}
129
48
}
130
49
@@ -167,14 +86,40 @@ func (h *Handler) AddRepo() iris.Handler {
167
86
}
168
87
}
169
88
89
+ func (h * Handler ) ListCharts () iris.Handler {
90
+ return func (ctx * context.Context ) {
91
+ pageNum , _ := ctx .Values ().GetInt (pkgV1 .PageNum )
92
+ pageSize , _ := ctx .Values ().GetInt (pkgV1 .PageSize )
93
+ pattern := ctx .URLParam ("pattern" )
94
+ cluster := ctx .URLParam ("cluster" )
95
+ repo := ctx .URLParam ("repo" )
96
+ charts , total , err := h .chartService .ListCharts (cluster , repo , pageNum , pageSize , pattern )
97
+ if err != nil {
98
+ ctx .StatusCode (iris .StatusInternalServerError )
99
+ ctx .Values ().Set ("message" , err .Error ())
100
+ return
101
+ }
102
+ chartArray := make ([]* Chart , len (charts ))
103
+ for i , ch := range charts {
104
+ names := strings .Split (ch .Name , "/" )
105
+ chartArray [i ] = & Chart {
106
+ Name : ch .Chart .Metadata .Name ,
107
+ Description : ch .Chart .Metadata .Description ,
108
+ Icon : ch .Chart .Icon ,
109
+ Repo : names [0 ],
110
+ }
111
+ }
112
+ ctx .Values ().Set ("data" , pkgV1.Page {Items : chartArray , Total : total })
113
+ }
114
+ }
115
+
170
116
func Install (parent iris.Party ) {
171
117
handler := NewHandler ()
172
118
sp := parent .Party ("/charts" )
173
- sp .Post ("/search" , handler .SearchCharts ())
174
- sp .Post ("/" , handler .CreateChart ())
175
- sp .Delete ("/:name" , handler .DeleteChart ())
176
119
sp .Put ("/:name" , handler .UpdateChart ())
177
120
sp .Get ("/:name" , handler .GetChart ())
178
121
sp .Get ("/repos" , handler .ListRepo ())
179
122
sp .Post ("/repos" , handler .AddRepo ())
123
+ sp .Delete ("/repos/:name" , handler .DeleteRepo ())
124
+ sp .Post ("/search" , handler .ListCharts ())
180
125
}
0 commit comments