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,
