diff --git a/model/commands.go b/model/commands.go index 1028f65..6ea3dc9 100644 --- a/model/commands.go +++ b/model/commands.go @@ -161,3 +161,14 @@ func DeleteCommand(cmd, group string) (err error) { _, err = x.Exec(query, cmd, group) return } + +// UpdateCommand - +func UpdateCommand(cmd, group, message string) (err error) { + if len(cmd) == 0 || len(message) == 0 { + return errors.New("cmd or message is empty") + } + + query := `update "public"."commands" set "message" = $1, "mtime" = now() where "cmd" = $2 and "group" = $3` + _, err = x.Exec(query, message, cmd, group) + return +} diff --git a/router/api/line.go b/router/api/line.go index afa07fa..9f62b0a 100644 --- a/router/api/line.go +++ b/router/api/line.go @@ -203,10 +203,9 @@ func DeleteLineGroupCommand(c *context.Context) { return } if !exist { - c.NotFound(nil) + c.NotFound("command not found") return } - // TODO err = model.DeleteCommand(cmd, g) if err != nil { c.ServerError(nil) @@ -215,3 +214,40 @@ func DeleteLineGroupCommand(c *context.Context) { c.Success(nil) } + +// EditLineGroupCommand - +func EditLineGroupCommand(c *context.Context) { + bodyStruct := struct { + Message string `json:"message"` + }{} + cmd, ok := c.Params.Get("cmd") + if !ok { + c.DataFormat(nil) + return + } + g := c.DefaultQuery("group", "") + + err := c.BindData(&bodyStruct) + if err != nil { + c.DataFormat(nil) + return + } + + exist, err := model.CheckCommand(cmd, g) + if err != nil { + c.ServerError(nil) + return + } + if !exist { + c.NotFound("command not found") + return + } + + err = model.UpdateCommand(cmd, g, bodyStruct.Message) + if err != nil { + c.ServerError(nil) + return + } + + c.Success(nil) +} diff --git a/router/routes/routes.go b/router/routes/routes.go index 2c675c7..54dbf82 100644 --- a/router/routes/routes.go +++ b/router/routes/routes.go @@ -73,6 +73,8 @@ func SetRoutes(r *gin.Engine) { apiGroup.GET("/line/groups", context.PatchCtx(api.CheckSession), context.PatchCtx(api.GetLineList)) apiGroup.GET("/line/cmds", context.PatchCtx(api.CheckSession), context.PatchCtx(api.GetCommandList)) apiGroup.POST("/line/cmd", context.PatchCtx(api.CheckSession), context.PatchCtx(api.AddLineGroupCommand)) + apiGroup.DELETE("/line/cmd/:cmd", context.PatchCtx(api.CheckSession), context.PatchCtx(api.DeleteLineGroupCommand)) + apiGroup.PUT("/line/cmd/:cmd", context.PatchCtx(api.CheckSession), context.PatchCtx(api.EditLineGroupCommand)) apiGroup.GET("/session", context.PatchCtx(api.CheckSession), context.PatchCtx(api.GetSessionData)) apiGroup.GET("/twitch/channel/:chid/opay/bar", context.PatchCtx(api.GetDonateBarStatus)) }