You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by kl...@apache.org on 2024/05/14 09:33:10 UTC

(incubator-devlake) branch kw-5519-remoteapi-dshelper updated: fix: connection listing is working now

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 <zh...@merico.dev>
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
 }