This is an automated email from the ASF dual-hosted git repository.

klesh pushed a commit to branch kw-5519-remoteapi-dshelper
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/kw-5519-remoteapi-dshelper by 
this push:
     new 1feef512a fix: connection listing is working now
1feef512a is described below

commit 1feef512a149fa4d8ca08c614652f9b28df5185e
Author: Klesh Wong <[email protected]>
AuthorDate: Tue May 14 17:32:43 2024 +0800

    fix: connection listing is working now
---
 backend/helpers/pluginhelper/api/ds_helper.go                | 12 +++++-------
 backend/helpers/pluginhelper/api/ds_model_api_helper.go      |  8 +++++---
 backend/helpers/srvhelper/typed_connection_service_helper.go |  4 ++++
 backend/helpers/srvhelper/typed_model_service_helper.go      |  2 +-
 .../helpers/srvhelper/typed_scope_config_service_helper.go   |  4 ++++
 backend/helpers/srvhelper/typed_scope_service_helper.go      |  4 ++++
 backend/plugins/jira/api/init.go                             |  7 +++----
 backend/plugins/jira/models/connection.go                    |  5 +++--
 8 files changed, 29 insertions(+), 17 deletions(-)

diff --git a/backend/helpers/pluginhelper/api/ds_helper.go 
b/backend/helpers/pluginhelper/api/ds_helper.go
index 74f065b6b..603f9613e 100644
--- a/backend/helpers/pluginhelper/api/ds_helper.go
+++ b/backend/helpers/pluginhelper/api/ds_helper.go
@@ -95,23 +95,21 @@ func NewDataSourceHelper[
        basicRes context.BasicRes,
        pluginName string,
        scopeSearchColumns []string,
-       connectionSterilizer func(c C) C,
-       scopeSterilizer func(s S) S,
-       scopeConfigSterilizer func(s SC) SC,
+       connectionSterilizer func(c *C) *C,
 ) *DsHelper[C, S, SC] {
-       var connectionModelInfo = &srvhelper.GenericConnectionModelInfo[C]{}
-       var scopeModelInfo = &srvhelper.GenericScopeModelInfo[S]{}
+       var connectionModelInfo = srvhelper.NewConnectionModelInfo[C]()
+       var scopeModelInfo = srvhelper.NewScopeModelInfo[S]()
        var scopeConfigModelInfo *srvhelper.GenericScopeConfigModelInfo[SC]
        scType := reflect.TypeOf(new(SC))
        if scType != noScopeConfig {
-               scopeConfigModelInfo = 
&srvhelper.GenericScopeConfigModelInfo[SC]{}
+               scopeConfigModelInfo = srvhelper.NewScopeConfigModelInfo[SC]()
        }
        anyDsHelper := NewDataSourceAnyHelper(
                basicRes,
                pluginName,
                scopeSearchColumns,
                func(c any) any {
-                       return connectionSterilizer(c.(C))
+                       return connectionSterilizer(c.(*C))
                },
                connectionModelInfo,
                scopeModelInfo,
diff --git a/backend/helpers/pluginhelper/api/ds_model_api_helper.go 
b/backend/helpers/pluginhelper/api/ds_model_api_helper.go
index 813199664..fa27f8d40 100644
--- a/backend/helpers/pluginhelper/api/ds_model_api_helper.go
+++ b/backend/helpers/pluginhelper/api/ds_model_api_helper.go
@@ -116,7 +116,7 @@ func (modelApi *AnyModelApiHelper) Sanitize(model any) any {
        if modelApi.sterilizers != nil {
                for _, sterilizer := range modelApi.sterilizers {
                        sanitizedModel := sterilizer(model)
-                       model = &sanitizedModel
+                       model = sanitizedModel
                }
        }
        return model
@@ -125,8 +125,10 @@ func (modelApi *AnyModelApiHelper) Sanitize(model any) any 
{
 func (modelApi *AnyModelApiHelper) BatchSanitize(models any) any {
        array := reflect.ValueOf(models)
        for i := 0; i < array.Len(); i++ {
-               model := array.Index(i)
-               model.Set(reflect.ValueOf(modelApi.Sanitize(model.Interface())))
+               elem := array.Index(i)
+               model := elem.Interface()
+               sanitized := modelApi.Sanitize(model)
+               elem.Set(reflect.ValueOf(sanitized))
        }
        return models
 }
diff --git a/backend/helpers/srvhelper/typed_connection_service_helper.go 
b/backend/helpers/srvhelper/typed_connection_service_helper.go
index 15aec70c7..0f3f7109e 100644
--- a/backend/helpers/srvhelper/typed_connection_service_helper.go
+++ b/backend/helpers/srvhelper/typed_connection_service_helper.go
@@ -30,6 +30,10 @@ func (*GenericConnectionModelInfo[C]) 
GetConnectionId(connection any) uint64 {
        return connection.(plugin.ToolLayerConnection).ConnectionId()
 }
 
+func NewConnectionModelInfo[C plugin.ToolLayerConnection]() 
*GenericConnectionModelInfo[C] {
+       return &GenericConnectionModelInfo[C]{NewGenericModelInfo[C]()}
+}
+
 // ConnectionSrvHelper
 type ConnectionSrvHelper[C plugin.ToolLayerConnection, S 
plugin.ToolLayerScope, SC plugin.ToolLayerScopeConfig] struct {
        *AnyConnectionSrvHelper
diff --git a/backend/helpers/srvhelper/typed_model_service_helper.go 
b/backend/helpers/srvhelper/typed_model_service_helper.go
index 7ffd53600..36cc424c3 100644
--- a/backend/helpers/srvhelper/typed_model_service_helper.go
+++ b/backend/helpers/srvhelper/typed_model_service_helper.go
@@ -51,7 +51,7 @@ func (info *GenericModelInfo[M]) New() interface{} {
 }
 
 func (info *GenericModelInfo[M]) NewSlice() interface{} {
-       return new([]*M)
+       return make([]*M, 0)
 }
 
 type ModelSrvHelper[M dal.Tabler] struct {
diff --git a/backend/helpers/srvhelper/typed_scope_config_service_helper.go 
b/backend/helpers/srvhelper/typed_scope_config_service_helper.go
index 4276cdccb..84fa1b921 100644
--- a/backend/helpers/srvhelper/typed_scope_config_service_helper.go
+++ b/backend/helpers/srvhelper/typed_scope_config_service_helper.go
@@ -34,6 +34,10 @@ func (*GenericScopeConfigModelInfo[SC]) 
GetScopeConfigId(scopeConfig any) uint64
        return scopeConfig.(plugin.ToolLayerScopeConfig).ScopeConfigId()
 }
 
+func NewScopeConfigModelInfo[SC plugin.ToolLayerScopeConfig]() 
*GenericScopeConfigModelInfo[SC] {
+       return &GenericScopeConfigModelInfo[SC]{NewGenericModelInfo[SC]()}
+}
+
 // ScopeConfigSrvHelper
 type ScopeConfigSrvHelper[C plugin.ToolLayerConnection, S 
plugin.ToolLayerScope, SC plugin.ToolLayerScopeConfig] struct {
        *AnyScopeConfigSrvHelper
diff --git a/backend/helpers/srvhelper/typed_scope_service_helper.go 
b/backend/helpers/srvhelper/typed_scope_service_helper.go
index 7875489e6..1d44e2a50 100644
--- a/backend/helpers/srvhelper/typed_scope_service_helper.go
+++ b/backend/helpers/srvhelper/typed_scope_service_helper.go
@@ -43,6 +43,10 @@ func (*GenericScopeModelInfo[S]) GetScopeParams(scope any) 
any {
        return scope.(plugin.ToolLayerScope).ScopeScopeConfigId()
 }
 
+func NewScopeModelInfo[S plugin.ToolLayerScope]() *GenericScopeModelInfo[S] {
+       return &GenericScopeModelInfo[S]{NewGenericModelInfo[S]()}
+}
+
 type ScopeDetail[S plugin.ToolLayerScope, SC plugin.ToolLayerScopeConfig] 
struct {
        Scope       S                   `json:"scope"`
        ScopeConfig *SC                 `json:"scopeConfig,omitempty"`
diff --git a/backend/plugins/jira/api/init.go b/backend/plugins/jira/api/init.go
index 86ca5caa4..161cf66cf 100644
--- a/backend/plugins/jira/api/init.go
+++ b/backend/plugins/jira/api/init.go
@@ -44,11 +44,10 @@ func Init(br context.BasicRes, p plugin.PluginMeta) {
                br,
                p.Name(),
                []string{"name"},
-               func(c models.JiraConnection) models.JiraConnection {
-                       return c.Sanitize()
+               func(c *models.JiraConnection) *models.JiraConnection {
+                       santized := c.Sanitize()
+                       return santized
                },
-               nil,
-               nil,
        )
        raProxy = 
api.NewDsRemoteApiProxyHelper[models.JiraConnection](dsHelper.ConnApi.ModelApiHelper)
        raScopeList = api.NewDsRemoteApiScopeListHelper[models.JiraConnection, 
models.JiraBoard, JiraRemotePagination](raProxy, listJiraRemoteScopes)
diff --git a/backend/plugins/jira/models/connection.go 
b/backend/plugins/jira/models/connection.go
index 8060c308a..5eb1e63cb 100644
--- a/backend/plugins/jira/models/connection.go
+++ b/backend/plugins/jira/models/connection.go
@@ -18,9 +18,10 @@ limitations under the License.
 package models
 
 import (
-       "github.com/apache/incubator-devlake/core/utils"
        "net/http"
 
+       "github.com/apache/incubator-devlake/core/utils"
+
        "github.com/apache/incubator-devlake/core/errors"
        helper "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
 )
@@ -93,7 +94,7 @@ func (connection *JiraConnection) MergeFromRequest(target 
*JiraConnection, body
        return nil
 }
 
-func (connection JiraConnection) Sanitize() JiraConnection {
+func (connection *JiraConnection) Sanitize() *JiraConnection {
        connection.JiraConn = connection.JiraConn.Sanitize()
        return connection
 }

Reply via email to