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

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

commit 49f7d01c6e9e6b288d9630be65efaf701393b0e7
Author: d4x1 <[email protected]>
AuthorDate: Mon Mar 17 13:02:04 2025 +0800

    fix(tapd): fix panic when casting fields
---
 backend/plugins/tapd/tasks/story_changelog_extractor.go | 12 +++++++-----
 backend/plugins/tapd/tasks/task_changelog_extractor.go  |  8 +++++---
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/backend/plugins/tapd/tasks/story_changelog_extractor.go 
b/backend/plugins/tapd/tasks/story_changelog_extractor.go
index 667e833cc..07f3e64cc 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)
+                                               item.ValueAfterParsed = 
cast.ToString(v)
                                                switch valueBeforeMap.(type) {
                                                case map[string]interface{}:
-                                                       item.ValueBeforeParsed 
= valueBeforeMap.(map[string]interface{})[k].(string)
+                                                       value := 
valueBeforeMap.(map[string]interface{})[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..5e33f52af 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)
+                                               item.ValueAfterParsed = 
cast.ToString(v)
                                                switch valueBeforeMap.(type) {
                                                case map[string]interface{}:
-                                                       item.ValueBeforeParsed 
= valueBeforeMap.(map[string]interface{})[k].(string)
+                                                       value := 
valueBeforeMap.(map[string]interface{})[k]
+                                                       item.ValueBeforeParsed 
= cast.ToString(value)
                                                default:
-                                                       item.ValueBeforeParsed 
= valueBeforeMap.(string)
+                                                       item.ValueBeforeParsed 
= cast.ToString(valueBeforeMap)
                                                }
                                                results = append(results, &item)
                                        }

Reply via email to