From 3199693d447dfda6a71c2b6a367ce2ffebbd8588 Mon Sep 17 00:00:00 2001 From: LinkinStar Date: Wed, 11 Jan 2023 10:02:45 +0800 Subject: [PATCH] feat(plugin): add update plugin status API --- .../controller_admin/plugin_controller.go | 42 ++++++++++++++++--- internal/schema/plugin_admin_schema.go | 28 +++++++++++++ 2 files changed, 65 insertions(+), 5 deletions(-) diff --git a/internal/controller_admin/plugin_controller.go b/internal/controller_admin/plugin_controller.go index 124d0aed..d22fa411 100644 --- a/internal/controller_admin/plugin_controller.go +++ b/internal/controller_admin/plugin_controller.go @@ -19,17 +19,39 @@ func NewPluginController(roleService *service.RoleService) *PluginController { } // GetPluginList get plugin list +// @Summary get plugin list +// @Description get plugin list +// @Tags admin +// @Security ApiKeyAuth +// @Accept json +// @Produce json +// @Success 200 {object} handler.RespBody{data=[]schema.GetCommentResp} +// @Router /answer/admin/api/plugins [get] func (pc *PluginController) GetPluginList(ctx *gin.Context) { - plugin.CallBase(func(base plugin.Base) error { - base.Info() + resp := make([]*schema.GetPluginListResp, 0) + _ = plugin.CallBase(func(base plugin.Base) error { + info := base.Info() + resp = append(resp, &schema.GetPluginListResp{ + Name: info.Name, + Description: info.Description, + Version: info.Version, + Enabled: plugin.StatusManager.IsEnabled(info.SlugName), + }) return nil }) - - resp, err := pc.roleService.GetRoleList(ctx) - handler.HandleResponse(ctx, err, resp) + handler.HandleResponse(ctx, nil, resp) } // UpdatePluginStatus update plugin status +// @Summary update plugin status +// @Description update plugin status +// @Tags admin +// @Accept json +// @Produce json +// @Security ApiKeyAuth +// @Param data body schema.UpdatePluginStatusReq true "UpdatePluginStatusReq" +// @Success 200 {object} handler.RespBody +// @Router /answer/api/v1/question/status [put] func (pc *PluginController) UpdatePluginStatus(ctx *gin.Context) { req := &schema.UpdatePluginStatusReq{} if handler.BindAndCheck(ctx, req) { @@ -42,12 +64,22 @@ func (pc *PluginController) UpdatePluginStatus(ctx *gin.Context) { // GetPluginConfig get plugin config func (pc *PluginController) GetPluginConfig(ctx *gin.Context) { + req := &schema.GetPluginConfigReq{} + if handler.BindAndCheck(ctx, req) { + return + } + resp, err := pc.roleService.GetRoleList(ctx) handler.HandleResponse(ctx, err, resp) } // UpdatePluginConfig get plugin config func (pc *PluginController) UpdatePluginConfig(ctx *gin.Context) { + req := &schema.GetPluginConfigReq{} + if handler.BindAndCheck(ctx, req) { + return + } + resp, err := pc.roleService.GetRoleList(ctx) handler.HandleResponse(ctx, err, resp) } diff --git a/internal/schema/plugin_admin_schema.go b/internal/schema/plugin_admin_schema.go index 6478e474..7ce7843b 100644 --- a/internal/schema/plugin_admin_schema.go +++ b/internal/schema/plugin_admin_schema.go @@ -1,6 +1,34 @@ package schema +import "github.com/answerdev/answer/internal/plugin" + +const ( + PluginStatusActive PluginStatus = "active" + PluginStatusInactive PluginStatus = "inactive" +) + +type PluginStatus string + +type GetPluginListResp struct { + Name string `json:"name"` + Description string `json:"description"` + Version string `json:"version"` + Enabled bool `json:"enabled"` +} + type UpdatePluginStatusReq struct { PluginSlugName string `validate:"required,gt=1,lte=100" json:"plugin_slug_name"` Enabled bool `json:"enabled"` } + +type GetPluginConfigReq struct { + PluginSlugName string `validate:"required,gt=1,lte=100" json:"plugin_slug_name"` +} + +type GetPluginConfigResp struct { + ConfigFields []plugin.ConfigField +} + +type UpdatePluginConfigReq struct { + PluginSlugName string `validate:"required,gt=1,lte=100" json:"plugin_slug_name"` +}