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

lynwee pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/main by this push:
     new 8240c8d2b fix(tapd): fix panic when casting fields (#8337)
8240c8d2b is described below

commit 8240c8d2b52222ee09e497c263cba886ce533e93
Author: Lynwee <[email protected]>
AuthorDate: Mon Mar 17 14:13:34 2025 +0800

    fix(tapd): fix panic when casting fields (#8337)
    
    * fix(tapd): fix panic when casting fields
    
    * fix(tapd): fix golang lint errors
---
 backend/plugins/tapd/tasks/story_changelog_extractor.go | 14 ++++++++------
 backend/plugins/tapd/tasks/task_changelog_extractor.go  | 10 ++++++----
 2 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/backend/plugins/tapd/tasks/story_changelog_extractor.go 
b/backend/plugins/tapd/tasks/story_changelog_extractor.go
index 667e833cc..c2a15cb3f 100644
--- a/backend/plugins/tapd/tasks/story_changelog_extractor.go
+++ b/backend/plugins/tapd/tasks/story_changelog_extractor.go
@@ -23,6 +23,7 @@ import (
        "github.com/apache/incubator-devlake/core/plugin"
        "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
        "github.com/apache/incubator-devlake/plugins/tapd/models"
+       "github.com/spf13/cast"
 )
 
 var _ plugin.SubTaskEntryPoint = ExtractStoryChangelog
@@ -81,12 +82,13 @@ func ExtractStoryChangelog(taskCtx plugin.SubTaskContext) 
errors.Error {
                                                item.ConnectionId = 
data.Options.ConnectionId
                                                item.ChangelogId = 
storyChangelog.Id
                                                item.Field = k
-                                               item.ValueAfterParsed = 
v.(string)
-                                               switch valueBeforeMap.(type) {
+                                               item.ValueAfterParsed = 
cast.ToString(v)
+                                               switch v := 
valueBeforeMap.(type) {
                                                case map[string]interface{}:
-                                                       item.ValueBeforeParsed 
= valueBeforeMap.(map[string]interface{})[k].(string)
+                                                       value := v[k]
+                                                       item.ValueBeforeParsed 
= cast.ToString(value)
                                                default:
-                                                       item.ValueBeforeParsed 
= valueBeforeMap.(string)
+                                                       item.ValueBeforeParsed 
= cast.ToString(valueBeforeMap)
                                                }
                                                err = convertUnicode(&item)
                                                if err != nil {
@@ -98,9 +100,9 @@ func ExtractStoryChangelog(taskCtx plugin.SubTaskContext) 
errors.Error {
                                        item.ConnectionId = 
data.Options.ConnectionId
                                        item.ChangelogId = storyChangelog.Id
                                        item.Field = fc.Field
-                                       item.ValueAfterParsed = 
valueAfterMap.(string)
+                                       item.ValueAfterParsed = 
cast.ToString(valueAfterMap)
                                        // as ValueAfterParsed is string, 
valueBeforeMap is always string
-                                       item.ValueBeforeParsed = 
valueBeforeMap.(string)
+                                       item.ValueBeforeParsed = 
cast.ToString(valueBeforeMap)
                                }
                                err = convertUnicode(&item)
                                if err != nil {
diff --git a/backend/plugins/tapd/tasks/task_changelog_extractor.go 
b/backend/plugins/tapd/tasks/task_changelog_extractor.go
index df9834b37..1c777f945 100644
--- a/backend/plugins/tapd/tasks/task_changelog_extractor.go
+++ b/backend/plugins/tapd/tasks/task_changelog_extractor.go
@@ -23,6 +23,7 @@ import (
        "github.com/apache/incubator-devlake/core/plugin"
        "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
        "github.com/apache/incubator-devlake/plugins/tapd/models"
+       "github.com/spf13/cast"
        "strings"
 )
 
@@ -82,12 +83,13 @@ func ExtractTaskChangelog(taskCtx plugin.SubTaskContext) 
errors.Error {
                                                item.ConnectionId = 
data.Options.ConnectionId
                                                item.ChangelogId = 
taskChangelog.Id
                                                item.Field = k
-                                               item.ValueAfterParsed = 
v.(string)
-                                               switch valueBeforeMap.(type) {
+                                               item.ValueAfterParsed = 
cast.ToString(v)
+                                               switch v := 
valueBeforeMap.(type) {
                                                case map[string]interface{}:
-                                                       item.ValueBeforeParsed 
= valueBeforeMap.(map[string]interface{})[k].(string)
+                                                       value := v[k]
+                                                       item.ValueBeforeParsed 
= cast.ToString(value)
                                                default:
-                                                       item.ValueBeforeParsed 
= valueBeforeMap.(string)
+                                                       item.ValueBeforeParsed 
= cast.ToString(valueBeforeMap)
                                                }
                                                results = append(results, &item)
                                        }

Reply via email to