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

klesh pushed a commit to branch kw-7852-components-field-length
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git

commit 9c848096f262e407a2123280f30c2c572366fa6a
Author: Klesh Wong <[email protected]>
AuthorDate: Tue Aug 13 16:08:35 2024 +0800

    fix: #7715 Data too long for column 'project_key'
---
 .../models/domainlayer/codequality/cq_projects.go  |  2 +-
 .../20240813_increase_project_key_length.go}       | 29 ++++++++--------------
 backend/plugins/sonarqube/api/blueprint_v200.go    |  2 +-
 .../20240813_increase_project_key_length.go}       | 29 ++++++++--------------
 .../sonarqube/models/migrationscripts/register.go  |  1 +
 .../plugins/sonarqube/models/sonarqube_project.go  |  2 +-
 .../plugins/sonarqube/tasks/projects_convertor.go  | 12 ++++-----
 7 files changed, 32 insertions(+), 45 deletions(-)

diff --git a/backend/core/models/domainlayer/codequality/cq_projects.go 
b/backend/core/models/domainlayer/codequality/cq_projects.go
index 5ba5d11b2..fe80dd1bb 100644
--- a/backend/core/models/domainlayer/codequality/cq_projects.go
+++ b/backend/core/models/domainlayer/codequality/cq_projects.go
@@ -26,7 +26,7 @@ import (
 var _ plugin.Scope = (*CqProject)(nil)
 
 type CqProject struct {
-       domainlayer.DomainEntity
+       domainlayer.DomainEntityExtended
        Name             string `gorm:"type:varchar(255)"`
        Qualifier        string `gorm:"type:varchar(255)"`
        Visibility       string `gorm:"type:varchar(64)"`
diff --git a/backend/core/models/domainlayer/codequality/cq_projects.go 
b/backend/core/models/migrationscripts/20240813_increase_project_key_length.go
similarity index 56%
copy from backend/core/models/domainlayer/codequality/cq_projects.go
copy to 
backend/core/models/migrationscripts/20240813_increase_project_key_length.go
index 5ba5d11b2..609b3d736 100644
--- a/backend/core/models/domainlayer/codequality/cq_projects.go
+++ 
b/backend/core/models/migrationscripts/20240813_increase_project_key_length.go
@@ -15,33 +15,26 @@ See the License for the specific language governing 
permissions and
 limitations under the License.
 */
 
-package codequality
+package migrationscripts
 
 import (
-       "github.com/apache/incubator-devlake/core/models/common"
-       "github.com/apache/incubator-devlake/core/models/domainlayer"
+       "github.com/apache/incubator-devlake/core/context"
+       "github.com/apache/incubator-devlake/core/errors"
        "github.com/apache/incubator-devlake/core/plugin"
 )
 
-var _ plugin.Scope = (*CqProject)(nil)
+var _ plugin.MigrationScript = (*increaseProjectKeyLength)(nil)
 
-type CqProject struct {
-       domainlayer.DomainEntity
-       Name             string `gorm:"type:varchar(255)"`
-       Qualifier        string `gorm:"type:varchar(255)"`
-       Visibility       string `gorm:"type:varchar(64)"`
-       LastAnalysisDate *common.Iso8601Time
-       CommitSha        string `gorm:"type:varchar(128)"`
-}
+type increaseProjectKeyLength struct{}
 
-func (CqProject) TableName() string {
-       return "cq_projects"
+func (script *increaseProjectKeyLength) Up(basicRes context.BasicRes) 
errors.Error {
+       return basicRes.GetDal().ModifyColumnType("cq_projects", "project_key", 
"varchar(500)")
 }
 
-func (s *CqProject) ScopeId() string {
-       return s.Id
+func (*increaseProjectKeyLength) Version() uint64 {
+       return 20240813160242
 }
 
-func (s *CqProject) ScopeName() string {
-       return s.Name
+func (*increaseProjectKeyLength) Name() string {
+       return "increase cq_projects.project_key length to 500"
 }
diff --git a/backend/plugins/sonarqube/api/blueprint_v200.go 
b/backend/plugins/sonarqube/api/blueprint_v200.go
index 250b1bf1d..e4804534b 100644
--- a/backend/plugins/sonarqube/api/blueprint_v200.go
+++ b/backend/plugins/sonarqube/api/blueprint_v200.go
@@ -111,7 +111,7 @@ func makeScopesV200(
                sonarqubeProject := scopeDetail.Scope
                // add board to scopes
                domainBoard := &codequality.CqProject{
-                       DomainEntity: domainlayer.DomainEntity{
+                       DomainEntityExtended: domainlayer.DomainEntityExtended{
                                Id: 
didgen.NewDomainIdGenerator(&models.SonarqubeProject{}).Generate(sonarqubeProject.ConnectionId,
 sonarqubeProject.ProjectKey),
                        },
                        Name: sonarqubeProject.Name,
diff --git a/backend/core/models/domainlayer/codequality/cq_projects.go 
b/backend/plugins/sonarqube/models/migrationscripts/20240813_increase_project_key_length.go
similarity index 56%
copy from backend/core/models/domainlayer/codequality/cq_projects.go
copy to 
backend/plugins/sonarqube/models/migrationscripts/20240813_increase_project_key_length.go
index 5ba5d11b2..ed1981670 100644
--- a/backend/core/models/domainlayer/codequality/cq_projects.go
+++ 
b/backend/plugins/sonarqube/models/migrationscripts/20240813_increase_project_key_length.go
@@ -15,33 +15,26 @@ See the License for the specific language governing 
permissions and
 limitations under the License.
 */
 
-package codequality
+package migrationscripts
 
 import (
-       "github.com/apache/incubator-devlake/core/models/common"
-       "github.com/apache/incubator-devlake/core/models/domainlayer"
+       "github.com/apache/incubator-devlake/core/context"
+       "github.com/apache/incubator-devlake/core/errors"
        "github.com/apache/incubator-devlake/core/plugin"
 )
 
-var _ plugin.Scope = (*CqProject)(nil)
+var _ plugin.MigrationScript = (*increaseProjectKeyLength)(nil)
 
-type CqProject struct {
-       domainlayer.DomainEntity
-       Name             string `gorm:"type:varchar(255)"`
-       Qualifier        string `gorm:"type:varchar(255)"`
-       Visibility       string `gorm:"type:varchar(64)"`
-       LastAnalysisDate *common.Iso8601Time
-       CommitSha        string `gorm:"type:varchar(128)"`
-}
+type increaseProjectKeyLength struct{}
 
-func (CqProject) TableName() string {
-       return "cq_projects"
+func (script *increaseProjectKeyLength) Up(basicRes context.BasicRes) 
errors.Error {
+       return basicRes.GetDal().ModifyColumnType("_tool_sonarqube_projects", 
"project_key", "varchar(500)")
 }
 
-func (s *CqProject) ScopeId() string {
-       return s.Id
+func (*increaseProjectKeyLength) Version() uint64 {
+       return 20240813155602
 }
 
-func (s *CqProject) ScopeName() string {
-       return s.Name
+func (*increaseProjectKeyLength) Name() string {
+       return "increase _tool_sonarqube_projects.project_key length to 500"
 }
diff --git a/backend/plugins/sonarqube/models/migrationscripts/register.go 
b/backend/plugins/sonarqube/models/migrationscripts/register.go
index dae45e25c..b11549cb8 100644
--- a/backend/plugins/sonarqube/models/migrationscripts/register.go
+++ b/backend/plugins/sonarqube/models/migrationscripts/register.go
@@ -35,5 +35,6 @@ func All() []plugin.MigrationScript {
                new(updateSonarQubeScopeConfig20240614),
                new(modifyNameLength),
                new(changeIssueComponentType),
+               new(increaseProjectKeyLength),
        }
 }
diff --git a/backend/plugins/sonarqube/models/sonarqube_project.go 
b/backend/plugins/sonarqube/models/sonarqube_project.go
index b31e0214f..aeb57134b 100644
--- a/backend/plugins/sonarqube/models/sonarqube_project.go
+++ b/backend/plugins/sonarqube/models/sonarqube_project.go
@@ -26,7 +26,7 @@ var _ plugin.ToolLayerScope = (*SonarqubeProject)(nil)
 
 type SonarqubeProject struct {
        common.Scope     `mapstructure:",squash"`
-       ProjectKey       string              `json:"projectKey" 
validate:"required" gorm:"type:varchar(255);primaryKey" 
mapstructure:"projectKey"`
+       ProjectKey       string              `json:"projectKey" 
validate:"required" gorm:"type:varchar(500);primaryKey" 
mapstructure:"projectKey"`
        Name             string              `json:"name" 
gorm:"type:varchar(500)" mapstructure:"name"`
        Qualifier        string              `json:"qualifier" 
gorm:"type:varchar(255)" mapstructure:"qualifier"`
        Visibility       string              `json:"visibility" 
gorm:"type:varchar(64)" mapstructure:"visibility"`
diff --git a/backend/plugins/sonarqube/tasks/projects_convertor.go 
b/backend/plugins/sonarqube/tasks/projects_convertor.go
index afa6a694d..3e3c1ebba 100644
--- a/backend/plugins/sonarqube/tasks/projects_convertor.go
+++ b/backend/plugins/sonarqube/tasks/projects_convertor.go
@@ -58,12 +58,12 @@ func ConvertProjects(taskCtx plugin.SubTaskContext) 
errors.Error {
                Convert: func(inputRow interface{}) ([]interface{}, 
errors.Error) {
                        sonarqubeProject := 
inputRow.(*sonarqubeModels.SonarqubeProject)
                        domainProject := &codequality.CqProject{
-                               DomainEntity:     domainlayer.DomainEntity{Id: 
projectIdGen.Generate(data.Options.ConnectionId, sonarqubeProject.ProjectKey)},
-                               Name:             sonarqubeProject.Name,
-                               Qualifier:        sonarqubeProject.Qualifier,
-                               Visibility:       sonarqubeProject.Visibility,
-                               LastAnalysisDate: 
sonarqubeProject.LastAnalysisDate,
-                               CommitSha:        sonarqubeProject.Revision,
+                               DomainEntityExtended: 
domainlayer.DomainEntityExtended{Id: 
projectIdGen.Generate(data.Options.ConnectionId, sonarqubeProject.ProjectKey)},
+                               Name:                 sonarqubeProject.Name,
+                               Qualifier:            
sonarqubeProject.Qualifier,
+                               Visibility:           
sonarqubeProject.Visibility,
+                               LastAnalysisDate:     
sonarqubeProject.LastAnalysisDate,
+                               CommitSha:            sonarqubeProject.Revision,
                        }
                        return []interface{}{
                                domainProject,

Reply via email to