From d965ac178d5eb2d7eab8a894d3841479e8a6bc2d Mon Sep 17 00:00:00 2001 From: "jim02.he" Date: Fri, 11 Jul 2025 20:20:58 +0800 Subject: [PATCH] feat(service/controller): add support for paginated and non-paginated plugin list responses with backward compatibility --- internal/server/controllers/plugins.go | 9 +++++---- internal/service/manage_plugin.go | 15 +++++++++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/internal/server/controllers/plugins.go b/internal/server/controllers/plugins.go index e0e76ad5c..e54602c46 100644 --- a/internal/server/controllers/plugins.go +++ b/internal/server/controllers/plugins.go @@ -241,11 +241,12 @@ func FetchPluginFromIdentifier(c *gin.Context) { func ListPlugins(c *gin.Context) { BindRequest(c, func(request struct { - TenantID string `uri:"tenant_id" validate:"required"` - Page int `form:"page" validate:"required,min=1"` - PageSize int `form:"page_size" validate:"required,min=1,max=256"` + TenantID string `uri:"tenant_id" validate:"required"` + Page int `form:"page" validate:"required,min=1"` + PageSize int `form:"page_size" validate:"required,min=1,max=256"` + ResponseType string `form:"response_type" validate:"omitempty,oneof=paged"` }) { - c.JSON(http.StatusOK, service.ListPlugins(request.TenantID, request.Page, request.PageSize)) + c.JSON(http.StatusOK, service.ListPlugins(request.TenantID, request.Page, request.PageSize, request.ResponseType)) }) } diff --git a/internal/service/manage_plugin.go b/internal/service/manage_plugin.go index b9794a020..94796a631 100644 --- a/internal/service/manage_plugin.go +++ b/internal/service/manage_plugin.go @@ -14,7 +14,7 @@ import ( "github.com/langgenius/dify-plugin-daemon/pkg/entities/plugin_entities" ) -func ListPlugins(tenant_id string, page int, page_size int) *entities.Response { +func ListPlugins(tenant_id string, page int, page_size int, response_type string) *entities.Response { type installation struct { ID string `json:"id"` Name string `json:"name"` @@ -96,12 +96,15 @@ func ListPlugins(tenant_id string, page int, page_size int) *entities.Response { }) } - finalData := responseData{ - List: data, - Total: totalCount, - } + if response_type == "paged" { + finalData := responseData{ + List: data, + Total: totalCount, + } - return entities.NewSuccessResponse(finalData) + return entities.NewSuccessResponse(finalData) + } + return entities.NewSuccessResponse(data) } // Using plugin_ids to fetch plugin installations