@@ -15,17 +15,17 @@ func (api *Api) setupDeployRouters(router *fox.Engine) {
1515 // 部署任务基本操作
1616 router .POST ("/v1/deployments" , api .CreateDeployment )
1717 router .GET ("/v1/deployments" , api .GetDeployments )
18- router .GET ("/v1/deployments/:deployID " , api .GetDeploymentByID )
19- router .POST ("/v1/deployments/:deployID " , api .UpdateDeployment )
20- router .DELETE ("/v1/deployments/:deployID " , api .DeleteDeployment )
18+ router .GET ("/v1/deployments/:service/:version " , api .GetDeploymentByServiceAndVersion )
19+ router .POST ("/v1/deployments/:service/:version " , api .UpdateDeployment )
20+ router .DELETE ("/v1/deployments/:service/:version " , api .DeleteDeployment )
2121
2222 // 部署任务控制操作
23- router .POST ("/v1/deployments/:deployID /pause" , api .PauseDeployment )
24- router .POST ("/v1/deployments/:deployID /continue" , api .ContinueDeployment )
25- router .POST ("/v1/deployments/:deployID /rollback" , api .RollbackDeployment )
23+ router .POST ("/v1/deployments/:service/:version /pause" , api .PauseDeployment )
24+ router .POST ("/v1/deployments/:service/:version /continue" , api .ContinueDeployment )
25+ router .POST ("/v1/deployments/:service/:version /rollback" , api .RollbackDeployment )
2626}
2727
28- // ===== 部署管理相关API =====
28+ // ===== 部署任务基本操作 =====
2929
3030// CreateDeployment 创建发布任务(POST /v1/deployments)
3131func (api * Api ) CreateDeployment (c * fox.Context ) {
@@ -48,7 +48,7 @@ func (api *Api) CreateDeployment(c *fox.Context) {
4848 return
4949 }
5050
51- deployID , err := api .service .CreateDeployment (ctx , & req )
51+ deployment , err := api .service .CreateDeployment (ctx , & req )
5252 if err != nil {
5353 if err == service .ErrServiceNotFound {
5454 c .JSON (http .StatusBadRequest , map [string ]any {
@@ -75,26 +75,24 @@ func (api *Api) CreateDeployment(c *fox.Context) {
7575 return
7676 }
7777
78- c .JSON (http .StatusCreated , map [string ]any {
79- "id" : deployID ,
80- "message" : "deployment created successfully" ,
81- })
78+ c .JSON (http .StatusCreated , deployment )
8279}
8380
84- // GetDeploymentByID 获取发布任务详情(GET /v1/deployments/:deployID )
85- func (api * Api ) GetDeploymentByID (c * fox.Context ) {
81+ // GetDeploymentByServiceAndVersion 获取发布任务详情(GET /v1/deployments/:service/:version )
82+ func (api * Api ) GetDeploymentByServiceAndVersion (c * fox.Context ) {
8683 ctx := c .Request .Context ()
87- deployID := c .Param ("deployID" )
84+ serviceName := c .Param ("service" )
85+ versionName := c .Param ("version" )
8886
89- if deployID == "" {
87+ if serviceName == "" || versionName == "" {
9088 c .JSON (http .StatusBadRequest , map [string ]any {
9189 "error" : "bad request" ,
92- "message" : "deployment ID is required" ,
90+ "message" : "service and version are required" ,
9391 })
9492 return
9593 }
9694
97- deployment , err := api .service .GetDeploymentByID (ctx , deployID )
95+ deployment , err := api .service .GetDeploymentByServiceAndVersion (ctx , serviceName , versionName )
9896 if err != nil {
9997 if err == service .ErrDeploymentNotFound {
10098 c .JSON (http .StatusNotFound , map [string ]any {
@@ -103,7 +101,7 @@ func (api *Api) GetDeploymentByID(c *fox.Context) {
103101 })
104102 return
105103 }
106- log .Error ().Err (err ).Str ("deployID " , deployID ).Msg ("failed to get deployment" )
104+ log .Error ().Err (err ).Str ("service " , serviceName ). Str ( "version" , versionName ).Msg ("failed to get deployment" )
107105 c .JSON (http .StatusInternalServerError , map [string ]any {
108106 "error" : "internal server error" ,
109107 "message" : "failed to get deployment" ,
@@ -145,15 +143,16 @@ func (api *Api) GetDeployments(c *fox.Context) {
145143 })
146144}
147145
148- // UpdateDeployment 修改发布任务(POST /v1/deployments/:deployID )
146+ // UpdateDeployment 修改发布任务(POST /v1/deployments/:service/:version )
149147func (api * Api ) UpdateDeployment (c * fox.Context ) {
150148 ctx := c .Request .Context ()
151- deployID := c .Param ("deployID" )
149+ serviceName := c .Param ("service" )
150+ versionName := c .Param ("version" )
152151
153- if deployID == "" {
152+ if serviceName == "" || versionName == "" {
154153 c .JSON (http .StatusBadRequest , map [string ]any {
155154 "error" : "bad request" ,
156- "message" : "deployment ID is required" ,
155+ "message" : "service and version are required" ,
157156 })
158157 return
159158 }
@@ -167,7 +166,7 @@ func (api *Api) UpdateDeployment(c *fox.Context) {
167166 return
168167 }
169168
170- err := api .service .UpdateDeployment (ctx , deployID , & req )
169+ err := api .service .UpdateDeployment (ctx , serviceName , versionName , & req )
171170 if err != nil {
172171 if err == service .ErrDeploymentNotFound {
173172 c .JSON (http .StatusNotFound , map [string ]any {
@@ -183,7 +182,7 @@ func (api *Api) UpdateDeployment(c *fox.Context) {
183182 })
184183 return
185184 }
186- log .Error ().Err (err ).Str ("deployID " , deployID ).Msg ("failed to update deployment" )
185+ log .Error ().Err (err ).Str ("service " , serviceName ). Str ( "version" , versionName ).Msg ("failed to update deployment" )
187186 c .JSON (http .StatusInternalServerError , map [string ]any {
188187 "error" : "internal server error" ,
189188 "message" : "failed to update deployment" ,
@@ -196,20 +195,21 @@ func (api *Api) UpdateDeployment(c *fox.Context) {
196195 })
197196}
198197
199- // DeleteDeployment 删除发布任务(DELETE /v1/deployments/:deployID )
198+ // DeleteDeployment 删除发布任务(DELETE /v1/deployments/:service/:version )
200199func (api * Api ) DeleteDeployment (c * fox.Context ) {
201200 ctx := c .Request .Context ()
202- deployID := c .Param ("deployID" )
201+ serviceName := c .Param ("service" )
202+ versionName := c .Param ("version" )
203203
204- if deployID == "" {
204+ if serviceName == "" || versionName == "" {
205205 c .JSON (http .StatusBadRequest , map [string ]any {
206206 "error" : "bad request" ,
207- "message" : "deployment ID is required" ,
207+ "message" : "service and version are required" ,
208208 })
209209 return
210210 }
211211
212- err := api .service .DeleteDeployment (ctx , deployID )
212+ err := api .service .DeleteDeployment (ctx , serviceName , versionName )
213213 if err != nil {
214214 if err == service .ErrDeploymentNotFound {
215215 c .JSON (http .StatusNotFound , map [string ]any {
@@ -225,7 +225,7 @@ func (api *Api) DeleteDeployment(c *fox.Context) {
225225 })
226226 return
227227 }
228- log .Error ().Err (err ).Str ("deployID " , deployID ).Msg ("failed to delete deployment" )
228+ log .Error ().Err (err ).Str ("service " , serviceName ). Str ( "version" , versionName ).Msg ("failed to delete deployment" )
229229 c .JSON (http .StatusInternalServerError , map [string ]any {
230230 "error" : "internal server error" ,
231231 "message" : "failed to delete deployment" ,
@@ -238,20 +238,23 @@ func (api *Api) DeleteDeployment(c *fox.Context) {
238238 })
239239}
240240
241- // PauseDeployment 暂停发布任务(POST /v1/deployments/:deployID/pause)
241+ // ===== 部署任务控制操作 =====
242+
243+ // PauseDeployment 暂停发布任务(POST /v1/deployments/:service/:version/pause)
242244func (api * Api ) PauseDeployment (c * fox.Context ) {
243245 ctx := c .Request .Context ()
244- deployID := c .Param ("deployID" )
246+ serviceName := c .Param ("service" )
247+ versionName := c .Param ("version" )
245248
246- if deployID == "" {
249+ if serviceName == "" || versionName == "" {
247250 c .JSON (http .StatusBadRequest , map [string ]any {
248251 "error" : "bad request" ,
249- "message" : "deployment ID is required" ,
252+ "message" : "service and version are required" ,
250253 })
251254 return
252255 }
253256
254- err := api .service .PauseDeployment (ctx , deployID )
257+ err := api .service .PauseDeployment (ctx , serviceName , versionName )
255258 if err != nil {
256259 if err == service .ErrDeploymentNotFound {
257260 c .JSON (http .StatusNotFound , map [string ]any {
@@ -267,7 +270,7 @@ func (api *Api) PauseDeployment(c *fox.Context) {
267270 })
268271 return
269272 }
270- log .Error ().Err (err ).Str ("deployID " , deployID ).Msg ("failed to pause deployment" )
273+ log .Error ().Err (err ).Str ("service " , serviceName ). Str ( "version" , versionName ).Msg ("failed to pause deployment" )
271274 c .JSON (http .StatusInternalServerError , map [string ]any {
272275 "error" : "internal server error" ,
273276 "message" : "failed to pause deployment" ,
@@ -280,20 +283,21 @@ func (api *Api) PauseDeployment(c *fox.Context) {
280283 })
281284}
282285
283- // ContinueDeployment 继续发布任务(POST /v1/deployments/:deployID /continue)
286+ // ContinueDeployment 继续发布任务(POST /v1/deployments/:service/:version /continue)
284287func (api * Api ) ContinueDeployment (c * fox.Context ) {
285288 ctx := c .Request .Context ()
286- deployID := c .Param ("deployID" )
289+ serviceName := c .Param ("service" )
290+ versionName := c .Param ("version" )
287291
288- if deployID == "" {
292+ if serviceName == "" || versionName == "" {
289293 c .JSON (http .StatusBadRequest , map [string ]any {
290294 "error" : "bad request" ,
291- "message" : "deployment ID is required" ,
295+ "message" : "service and version are required" ,
292296 })
293297 return
294298 }
295299
296- err := api .service .ContinueDeployment (ctx , deployID )
300+ err := api .service .ContinueDeployment (ctx , serviceName , versionName )
297301 if err != nil {
298302 if err == service .ErrDeploymentNotFound {
299303 c .JSON (http .StatusNotFound , map [string ]any {
@@ -309,7 +313,7 @@ func (api *Api) ContinueDeployment(c *fox.Context) {
309313 })
310314 return
311315 }
312- log .Error ().Err (err ).Str ("deployID " , deployID ).Msg ("failed to continue deployment" )
316+ log .Error ().Err (err ).Str ("service " , serviceName ). Str ( "version" , versionName ).Msg ("failed to continue deployment" )
313317 c .JSON (http .StatusInternalServerError , map [string ]any {
314318 "error" : "internal server error" ,
315319 "message" : "failed to continue deployment" ,
@@ -322,20 +326,38 @@ func (api *Api) ContinueDeployment(c *fox.Context) {
322326 })
323327}
324328
325- // RollbackDeployment 回滚发布任务(POST /v1/deployments/:deployID /rollback)
329+ // RollbackDeployment 回滚发布任务(POST /v1/deployments/:service/:version /rollback)
326330func (api * Api ) RollbackDeployment (c * fox.Context ) {
327331 ctx := c .Request .Context ()
328- deployID := c .Param ("deployID" )
332+ serviceName := c .Param ("service" )
333+ versionName := c .Param ("version" )
334+
335+ if serviceName == "" || versionName == "" {
336+ c .JSON (http .StatusBadRequest , map [string ]any {
337+ "error" : "bad request" ,
338+ "message" : "service and version are required" ,
339+ })
340+ return
341+ }
342+
343+ var req model.RollbackDeploymentRequest
344+ if err := c .ShouldBindJSON (& req ); err != nil {
345+ c .JSON (http .StatusBadRequest , map [string ]any {
346+ "error" : "bad request" ,
347+ "message" : "invalid request body: " + err .Error (),
348+ })
349+ return
350+ }
329351
330- if deployID == "" {
352+ if req . TargetVersion == "" {
331353 c .JSON (http .StatusBadRequest , map [string ]any {
332354 "error" : "bad request" ,
333- "message" : "deployment ID is required" ,
355+ "message" : "target version is required" ,
334356 })
335357 return
336358 }
337359
338- err := api .service .RollbackDeployment (ctx , deployID )
360+ err := api .service .RollbackDeployment (ctx , serviceName , versionName , & req )
339361 if err != nil {
340362 if err == service .ErrDeploymentNotFound {
341363 c .JSON (http .StatusNotFound , map [string ]any {
@@ -351,7 +373,7 @@ func (api *Api) RollbackDeployment(c *fox.Context) {
351373 })
352374 return
353375 }
354- log .Error ().Err (err ).Str ("deployID " , deployID ).Msg ("failed to rollback deployment" )
376+ log .Error ().Err (err ).Str ("service " , serviceName ). Str ( "version" , versionName ).Msg ("failed to rollback deployment" )
355377 c .JSON (http .StatusInternalServerError , map [string ]any {
356378 "error" : "internal server error" ,
357379 "message" : "failed to rollback deployment" ,
@@ -360,6 +382,6 @@ func (api *Api) RollbackDeployment(c *fox.Context) {
360382 }
361383
362384 c .JSON (http .StatusOK , map [string ]any {
363- "message" : "deployment rolled back successfully" ,
385+ "message" : "deployment rollback initiated successfully" ,
364386 })
365387}
0 commit comments