You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by ab...@apache.org on 2023/08/08 04:25:52 UTC

[incubator-devlake] branch main updated: refactor: replace datatypes.JSON with json.RawMessage for migrationscripts (#5825)

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

abeizn 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 a400a4b4e refactor: replace datatypes.JSON with json.RawMessage for migrationscripts (#5825)
a400a4b4e is described below

commit a400a4b4e7b04d340eedd626f461a996b01607a7
Author: Klesh Wong <zh...@merico.dev>
AuthorDate: Tue Aug 8 12:25:47 2023 +0800

    refactor: replace datatypes.JSON with json.RawMessage for migrationscripts (#5825)
---
 .../20221101_add_collector_state.go                |  5 ++-
 .../models/migrationscripts/archived/blueprint.go  |  4 +-
 .../models/migrationscripts/archived/pipeline.go   |  5 +--
 .../core/models/migrationscripts/archived/task.go  |  7 ++--
 backend/helpers/pluginhelper/api/api_rawdata.go    |  5 +--
 .../archived/transformation_rule.go                |  9 +++--
 .../archived/transformation_rule.go                | 11 ++---
 .../github/models/migrationscripts/archived/job.go | 47 +++++++++++-----------
 .../archived/transformation_rules.go               | 29 ++++++-------
 .../archived/transformation_rules.go               | 29 ++++++-------
 .../jira/models/migrationscripts/archived/issue.go | 10 ++---
 .../models/migrationscripts/archived/remotelink.go | 14 +++----
 12 files changed, 89 insertions(+), 86 deletions(-)

diff --git a/backend/core/models/migrationscripts/20221101_add_collector_state.go b/backend/core/models/migrationscripts/20221101_add_collector_state.go
index ae6a038e8..1a0d4aa84 100644
--- a/backend/core/models/migrationscripts/20221101_add_collector_state.go
+++ b/backend/core/models/migrationscripts/20221101_add_collector_state.go
@@ -18,10 +18,11 @@ limitations under the License.
 package migrationscripts
 
 import (
+	"encoding/json"
+
 	"github.com/apache/incubator-devlake/core/context"
 	"github.com/apache/incubator-devlake/core/errors"
 	commonArchived "github.com/apache/incubator-devlake/core/models/migrationscripts/archived"
-	"gorm.io/datatypes"
 )
 
 type createCollectorState struct{}
@@ -29,7 +30,7 @@ type createCollectorState struct{}
 type CollectorState20221101 struct {
 	commonArchived.GenericModel[string]
 	Type  string
-	Value datatypes.JSON
+	Value json.RawMessage `gorm:"type:json"`
 }
 
 func (CollectorState20221101) TableName() string {
diff --git a/backend/core/models/migrationscripts/archived/blueprint.go b/backend/core/models/migrationscripts/archived/blueprint.go
index a7e18d85c..9bf4c68dd 100644
--- a/backend/core/models/migrationscripts/archived/blueprint.go
+++ b/backend/core/models/migrationscripts/archived/blueprint.go
@@ -18,12 +18,12 @@ limitations under the License.
 package archived
 
 import (
-	"gorm.io/datatypes"
+	"encoding/json"
 )
 
 type Blueprint struct {
 	Name       string
-	Tasks      datatypes.JSON
+	Tasks      json.RawMessage `gorm:"type:json"`
 	Enable     bool
 	CronConfig string
 	Model
diff --git a/backend/core/models/migrationscripts/archived/pipeline.go b/backend/core/models/migrationscripts/archived/pipeline.go
index 5ecf4b23b..3479d378f 100644
--- a/backend/core/models/migrationscripts/archived/pipeline.go
+++ b/backend/core/models/migrationscripts/archived/pipeline.go
@@ -18,16 +18,15 @@ limitations under the License.
 package archived
 
 import (
+	"encoding/json"
 	"time"
-
-	"gorm.io/datatypes"
 )
 
 type Pipeline struct {
 	Model
 	Name        string `json:"name" gorm:"index"`
 	BlueprintId uint64
-	Tasks       datatypes.JSON
+	Tasks       json.RawMessage `gorm:"type:json"`
 	TotalTasks  int
 	// Deprecated
 	FinishedTasks int
diff --git a/backend/core/models/migrationscripts/archived/task.go b/backend/core/models/migrationscripts/archived/task.go
index 8b4c67309..c4be31d38 100644
--- a/backend/core/models/migrationscripts/archived/task.go
+++ b/backend/core/models/migrationscripts/archived/task.go
@@ -18,15 +18,14 @@ limitations under the License.
 package archived
 
 import (
+	"encoding/json"
 	"time"
-
-	"gorm.io/datatypes"
 )
 
 type Task struct {
 	Model
-	Plugin        string `gorm:"index"`
-	Options       datatypes.JSON
+	Plugin        string          `gorm:"index"`
+	Options       json.RawMessage `gorm:"type:json"`
 	Status        string
 	Message       string
 	Progress      float32
diff --git a/backend/helpers/pluginhelper/api/api_rawdata.go b/backend/helpers/pluginhelper/api/api_rawdata.go
index a70ed0cc4..ef16dde6d 100644
--- a/backend/helpers/pluginhelper/api/api_rawdata.go
+++ b/backend/helpers/pluginhelper/api/api_rawdata.go
@@ -18,14 +18,13 @@ limitations under the License.
 package api
 
 import (
+	"encoding/json"
 	"fmt"
 	"reflect"
 	"time"
 
 	"github.com/apache/incubator-devlake/core/errors"
 	plugin "github.com/apache/incubator-devlake/core/plugin"
-
-	"gorm.io/datatypes"
 )
 
 // RawData is raw data structure in DB storage
@@ -34,7 +33,7 @@ type RawData struct {
 	Params    string `gorm:"type:varchar(255);index"`
 	Data      []byte
 	Url       string
-	Input     datatypes.JSON
+	Input     json.RawMessage `gorm:"type:json"`
 	CreatedAt time.Time
 }
 
diff --git a/backend/plugins/bamboo/models/migrationscripts/archived/transformation_rule.go b/backend/plugins/bamboo/models/migrationscripts/archived/transformation_rule.go
index 18354eb8c..20fed3ed6 100644
--- a/backend/plugins/bamboo/models/migrationscripts/archived/transformation_rule.go
+++ b/backend/plugins/bamboo/models/migrationscripts/archived/transformation_rule.go
@@ -18,17 +18,18 @@ limitations under the License.
 package archived
 
 import (
+	"encoding/json"
+
 	"github.com/apache/incubator-devlake/core/models/migrationscripts/archived"
-	"gorm.io/datatypes"
 )
 
 type BambooTransformationRule struct {
 	archived.Model
 	Name string `gorm:"type:varchar(255);index:idx_name_gitlab,unique" validate:"required" mapstructure:"name" json:"name"`
 	// should be {realRepoName: [bamboo_repoId]}
-	RepoMap           datatypes.JSONMap
-	DeploymentPattern string `mapstructure:"deploymentPattern,omitempty" json:"deploymentPattern" gorm:"type:varchar(255)"`
-	ProductionPattern string `mapstructure:"productionPattern,omitempty" json:"productionPattern" gorm:"type:varchar(255)"`
+	RepoMap           json.RawMessage `gorm:"type:json"`
+	DeploymentPattern string          `mapstructure:"deploymentPattern,omitempty" json:"deploymentPattern" gorm:"type:varchar(255)"`
+	ProductionPattern string          `mapstructure:"productionPattern,omitempty" json:"productionPattern" gorm:"type:varchar(255)"`
 }
 
 func (BambooTransformationRule) TableName() string {
diff --git a/backend/plugins/bitbucket/models/migrationscripts/archived/transformation_rule.go b/backend/plugins/bitbucket/models/migrationscripts/archived/transformation_rule.go
index 2abd7743f..253281a57 100644
--- a/backend/plugins/bitbucket/models/migrationscripts/archived/transformation_rule.go
+++ b/backend/plugins/bitbucket/models/migrationscripts/archived/transformation_rule.go
@@ -18,16 +18,17 @@ limitations under the License.
 package archived
 
 import (
+	"encoding/json"
+
 	"github.com/apache/incubator-devlake/core/models/migrationscripts/archived"
-	"gorm.io/datatypes"
 )
 
 type BitbucketTransformationRule struct {
 	archived.Model
-	Name              string            `gorm:"type:varchar(255);index:idx_name_github,unique"`
-	DeploymentPattern string            `gorm:"type:varchar(255)"`
-	ProductionPattern string            `gorm:"type:varchar(255)"`
-	Refdiff           datatypes.JSONMap `format:"json"`
+	Name              string          `gorm:"type:varchar(255);index:idx_name_github,unique"`
+	DeploymentPattern string          `gorm:"type:varchar(255)"`
+	ProductionPattern string          `gorm:"type:varchar(255)"`
+	Refdiff           json.RawMessage `gorm:"type:json"`
 
 	// a string array, split by `,`.
 	IssueStatusTodo       string `gorm:"type:varchar(255)"`
diff --git a/backend/plugins/github/models/migrationscripts/archived/job.go b/backend/plugins/github/models/migrationscripts/archived/job.go
index 90f4025ac..e6995b254 100644
--- a/backend/plugins/github/models/migrationscripts/archived/job.go
+++ b/backend/plugins/github/models/migrationscripts/archived/job.go
@@ -18,34 +18,35 @@ limitations under the License.
 package archived
 
 import (
-	"github.com/apache/incubator-devlake/core/models/migrationscripts/archived"
-	"gorm.io/datatypes"
+	"encoding/json"
 	"time"
+
+	"github.com/apache/incubator-devlake/core/models/migrationscripts/archived"
 )
 
 type GithubJob struct {
 	archived.NoPKModel
-	ConnectionId  uint64         `gorm:"primaryKey"`
-	RepoId        int            `gorm:"primaryKey"`
-	ID            int            `json:"id" gorm:"primaryKey;autoIncrement:false"`
-	RunID         int            `json:"run_id"`
-	RunURL        string         `json:"run_url" gorm:"type:varchar(255)"`
-	NodeID        string         `json:"node_id" gorm:"type:varchar(255)"`
-	HeadSha       string         `json:"head_sha" gorm:"type:varchar(255)"`
-	URL           string         `json:"url" gorm:"type:varchar(255)"`
-	HTMLURL       string         `json:"html_url" gorm:"type:varchar(255)"`
-	Status        string         `json:"status" gorm:"type:varchar(255)"`
-	Conclusion    string         `json:"conclusion" gorm:"type:varchar(255)"`
-	StartedAt     *time.Time     `json:"started_at"`
-	CompletedAt   *time.Time     `json:"completed_at"`
-	Name          string         `json:"name" gorm:"type:varchar(255)"`
-	Steps         datatypes.JSON `json:"steps"`
-	CheckRunURL   string         `json:"check_run_url" gorm:"type:varchar(255)"`
-	Labels        datatypes.JSON `json:"labels"`
-	RunnerID      int            `json:"runner_id"`
-	RunnerName    string         `json:"runner_name" gorm:"type:varchar(255)"`
-	RunnerGroupID int            `json:"runner_group_id"`
-	Type          string         `json:"type" gorm:"type:varchar(255)"`
+	ConnectionId  uint64          `gorm:"primaryKey"`
+	RepoId        int             `gorm:"primaryKey"`
+	ID            int             `json:"id" gorm:"primaryKey;autoIncrement:false"`
+	RunID         int             `json:"run_id"`
+	RunURL        string          `json:"run_url" gorm:"type:varchar(255)"`
+	NodeID        string          `json:"node_id" gorm:"type:varchar(255)"`
+	HeadSha       string          `json:"head_sha" gorm:"type:varchar(255)"`
+	URL           string          `json:"url" gorm:"type:varchar(255)"`
+	HTMLURL       string          `json:"html_url" gorm:"type:varchar(255)"`
+	Status        string          `json:"status" gorm:"type:varchar(255)"`
+	Conclusion    string          `json:"conclusion" gorm:"type:varchar(255)"`
+	StartedAt     *time.Time      `json:"started_at"`
+	CompletedAt   *time.Time      `json:"completed_at"`
+	Name          string          `json:"name" gorm:"type:varchar(255)"`
+	Steps         json.RawMessage `json:"steps" gorm:"type:json"`
+	CheckRunURL   string          `json:"check_run_url" gorm:"type:varchar(255)"`
+	Labels        json.RawMessage `json:"labels" gorm:"type:json"`
+	RunnerID      int             `json:"runner_id"`
+	RunnerName    string          `json:"runner_name" gorm:"type:varchar(255)"`
+	RunnerGroupID int             `json:"runner_group_id"`
+	Type          string          `json:"type" gorm:"type:varchar(255)"`
 }
 
 func (GithubJob) TableName() string {
diff --git a/backend/plugins/github/models/migrationscripts/archived/transformation_rules.go b/backend/plugins/github/models/migrationscripts/archived/transformation_rules.go
index 2c8d3f661..d8f8b90d4 100644
--- a/backend/plugins/github/models/migrationscripts/archived/transformation_rules.go
+++ b/backend/plugins/github/models/migrationscripts/archived/transformation_rules.go
@@ -18,25 +18,26 @@ limitations under the License.
 package archived
 
 import (
+	"encoding/json"
+
 	"github.com/apache/incubator-devlake/core/models/migrationscripts/archived"
-	"gorm.io/datatypes"
 )
 
 type GithubTransformationRule struct {
 	archived.Model
-	Name                 string `mapstructure:"name" json:"name" gorm:"type:varchar(255);index:idx_name_github,unique" validate:"required"`
-	PrType               string `mapstructure:"prType" json:"prType" gorm:"type:varchar(255)"`
-	PrComponent          string `mapstructure:"prComponent" json:"prComponent" gorm:"type:varchar(255)"`
-	PrBodyClosePattern   string `mapstructure:"prBodyClosePattern" json:"prBodyClosePattern" gorm:"type:varchar(255)"`
-	IssueSeverity        string `mapstructure:"issueSeverity" json:"issueSeverity" gorm:"type:varchar(255)"`
-	IssuePriority        string `mapstructure:"issuePriority" json:"issuePriority" gorm:"type:varchar(255)"`
-	IssueComponent       string `mapstructure:"issueComponent" json:"issueComponent" gorm:"type:varchar(255)"`
-	IssueTypeBug         string `mapstructure:"issueTypeBug" json:"issueTypeBug" gorm:"type:varchar(255)"`
-	IssueTypeIncident    string `mapstructure:"issueTypeIncident" json:"issueTypeIncident" gorm:"type:varchar(255)"`
-	IssueTypeRequirement string `mapstructure:"issueTypeRequirement" json:"issueTypeRequirement" gorm:"type:varchar(255)"`
-	DeploymentPattern    string `mapstructure:"deploymentPattern,omitempty" json:"deploymentPattern" gorm:"type:varchar(255)"`
-	ProductionPattern    string `mapstructure:"productionPattern,omitempty" json:"productionPattern" gorm:"type:varchar(255)"`
-	Refdiff              datatypes.JSONMap
+	Name                 string          `mapstructure:"name" json:"name" gorm:"type:varchar(255);index:idx_name_github,unique" validate:"required"`
+	PrType               string          `mapstructure:"prType" json:"prType" gorm:"type:varchar(255)"`
+	PrComponent          string          `mapstructure:"prComponent" json:"prComponent" gorm:"type:varchar(255)"`
+	PrBodyClosePattern   string          `mapstructure:"prBodyClosePattern" json:"prBodyClosePattern" gorm:"type:varchar(255)"`
+	IssueSeverity        string          `mapstructure:"issueSeverity" json:"issueSeverity" gorm:"type:varchar(255)"`
+	IssuePriority        string          `mapstructure:"issuePriority" json:"issuePriority" gorm:"type:varchar(255)"`
+	IssueComponent       string          `mapstructure:"issueComponent" json:"issueComponent" gorm:"type:varchar(255)"`
+	IssueTypeBug         string          `mapstructure:"issueTypeBug" json:"issueTypeBug" gorm:"type:varchar(255)"`
+	IssueTypeIncident    string          `mapstructure:"issueTypeIncident" json:"issueTypeIncident" gorm:"type:varchar(255)"`
+	IssueTypeRequirement string          `mapstructure:"issueTypeRequirement" json:"issueTypeRequirement" gorm:"type:varchar(255)"`
+	DeploymentPattern    string          `mapstructure:"deploymentPattern,omitempty" json:"deploymentPattern" gorm:"type:varchar(255)"`
+	ProductionPattern    string          `mapstructure:"productionPattern,omitempty" json:"productionPattern" gorm:"type:varchar(255)"`
+	Refdiff              json.RawMessage `gorm:"type:json"`
 }
 
 func (GithubTransformationRule) TableName() string {
diff --git a/backend/plugins/gitlab/models/migrationscripts/archived/transformation_rules.go b/backend/plugins/gitlab/models/migrationscripts/archived/transformation_rules.go
index c3a08747e..73c124872 100644
--- a/backend/plugins/gitlab/models/migrationscripts/archived/transformation_rules.go
+++ b/backend/plugins/gitlab/models/migrationscripts/archived/transformation_rules.go
@@ -18,25 +18,26 @@ limitations under the License.
 package archived
 
 import (
+	"encoding/json"
+
 	"github.com/apache/incubator-devlake/core/models/migrationscripts/archived"
-	"gorm.io/datatypes"
 )
 
 type GitlabTransformationRule struct {
 	archived.Model
-	Name                 string `gorm:"type:varchar(255);index:idx_name_gitlab,unique" validate:"required"`
-	PrType               string `mapstructure:"prType" json:"prType" gorm:"type:varchar(255)"`
-	PrComponent          string `mapstructure:"prComponent" json:"prComponent" gorm:"type:varchar(255)"`
-	PrBodyClosePattern   string `mapstructure:"prBodyClosePattern" json:"prBodyClosePattern" gorm:"type:varchar(255)"`
-	IssueSeverity        string `mapstructure:"issueSeverity" json:"issueSeverity" gorm:"type:varchar(255)"`
-	IssuePriority        string `mapstructure:"issuePriority" json:"issuePriority" gorm:"type:varchar(255)"`
-	IssueComponent       string `mapstructure:"issueComponent" json:"issueComponent" gorm:"type:varchar(255)"`
-	IssueTypeBug         string `mapstructure:"issueTypeBug" json:"issueTypeBug" gorm:"type:varchar(255)"`
-	IssueTypeIncident    string `mapstructure:"issueTypeIncident" json:"issueTypeIncident" gorm:"type:varchar(255)"`
-	IssueTypeRequirement string `mapstructure:"issueTypeRequirement" json:"issueTypeRequirement" gorm:"type:varchar(255)"`
-	DeploymentPattern    string `mapstructure:"deploymentPattern" json:"deploymentPattern" gorm:"type:varchar(255)"`
-	ProductionPattern    string `mapstructure:"productionPattern,omitempty" json:"productionPattern" gorm:"type:varchar(255)"`
-	Refdiff              datatypes.JSONMap
+	Name                 string          `gorm:"type:varchar(255);index:idx_name_gitlab,unique" validate:"required"`
+	PrType               string          `mapstructure:"prType" json:"prType" gorm:"type:varchar(255)"`
+	PrComponent          string          `mapstructure:"prComponent" json:"prComponent" gorm:"type:varchar(255)"`
+	PrBodyClosePattern   string          `mapstructure:"prBodyClosePattern" json:"prBodyClosePattern" gorm:"type:varchar(255)"`
+	IssueSeverity        string          `mapstructure:"issueSeverity" json:"issueSeverity" gorm:"type:varchar(255)"`
+	IssuePriority        string          `mapstructure:"issuePriority" json:"issuePriority" gorm:"type:varchar(255)"`
+	IssueComponent       string          `mapstructure:"issueComponent" json:"issueComponent" gorm:"type:varchar(255)"`
+	IssueTypeBug         string          `mapstructure:"issueTypeBug" json:"issueTypeBug" gorm:"type:varchar(255)"`
+	IssueTypeIncident    string          `mapstructure:"issueTypeIncident" json:"issueTypeIncident" gorm:"type:varchar(255)"`
+	IssueTypeRequirement string          `mapstructure:"issueTypeRequirement" json:"issueTypeRequirement" gorm:"type:varchar(255)"`
+	DeploymentPattern    string          `mapstructure:"deploymentPattern" json:"deploymentPattern" gorm:"type:varchar(255)"`
+	ProductionPattern    string          `mapstructure:"productionPattern,omitempty" json:"productionPattern" gorm:"type:varchar(255)"`
+	Refdiff              json.RawMessage `gorm:"type:json"`
 }
 
 func (t GitlabTransformationRule) TableName() string {
diff --git a/backend/plugins/jira/models/migrationscripts/archived/issue.go b/backend/plugins/jira/models/migrationscripts/archived/issue.go
index 511a9fa5d..fb30fe7e8 100644
--- a/backend/plugins/jira/models/migrationscripts/archived/issue.go
+++ b/backend/plugins/jira/models/migrationscripts/archived/issue.go
@@ -18,10 +18,10 @@ limitations under the License.
 package archived
 
 import (
-	"github.com/apache/incubator-devlake/core/models/migrationscripts/archived"
+	"encoding/json"
 	"time"
 
-	"gorm.io/datatypes"
+	"github.com/apache/incubator-devlake/core/models/migrationscripts/archived"
 )
 
 type JiraIssue struct {
@@ -59,9 +59,9 @@ type JiraIssue struct {
 	SpentMinutes             int64
 	LeadTimeMinutes          uint
 	StdStoryPoint            int64
-	StdType                  string `gorm:"type:varchar(255)"`
-	StdStatus                string `gorm:"type:varchar(255)"`
-	AllFields                datatypes.JSONMap
+	StdType                  string          `gorm:"type:varchar(255)"`
+	StdStatus                string          `gorm:"type:varchar(255)"`
+	AllFields                json.RawMessage `gorm:"type:json"`
 	archived.NoPKModel
 }
 
diff --git a/backend/plugins/jira/models/migrationscripts/archived/remotelink.go b/backend/plugins/jira/models/migrationscripts/archived/remotelink.go
index c72af90dc..d29dc6b44 100644
--- a/backend/plugins/jira/models/migrationscripts/archived/remotelink.go
+++ b/backend/plugins/jira/models/migrationscripts/archived/remotelink.go
@@ -18,21 +18,21 @@ limitations under the License.
 package archived
 
 import (
-	"github.com/apache/incubator-devlake/core/models/migrationscripts/archived"
+	"encoding/json"
 	"time"
 
-	"gorm.io/datatypes"
+	"github.com/apache/incubator-devlake/core/models/migrationscripts/archived"
 )
 
 type JiraRemotelink struct {
 	archived.NoPKModel
 
 	// collected fields
-	ConnectionId uint64 `gorm:"primaryKey"`
-	RemotelinkId uint64 `gorm:"primarykey"`
-	IssueId      uint64 `gorm:"index"`
-	RawJson      datatypes.JSON
-	Self         string `gorm:"type:varchar(255)"`
+	ConnectionId uint64          `gorm:"primaryKey"`
+	RemotelinkId uint64          `gorm:"primarykey"`
+	IssueId      uint64          `gorm:"index"`
+	RawJson      json.RawMessage `gorm:"type:json"`
+	Self         string          `gorm:"type:varchar(255)"`
 	Title        string
 	Url          string `gorm:"type:varchar(255)"`
 	IssueUpdated *time.Time