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

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

commit a223bf621246835cd39a08642d0a47ca372fbdc6
Author: narro wizard <[email protected]>
AuthorDate: Tue May 27 07:02:53 2025 +0000

    refactor(codequality): extend field size for CQ and SonarQube
    
    - Increase CqFileMetrics.FileName to varchar(2000)
    - Increase CqProject.Name to varchar(2000)
    - Increase CqFileMetrics.Id to varchar(3000)
    - Increase SonarqubeFileMetrics.FileMetricsKey to varchar(3000)
    - Increase SonarqubeFileMetrics.FileName to varchar(2000)
    
    These changes accommodate longer file names and identifiers in modern 
projects.
    
    #8452
---
 .../domainlayer/codequality/cq_file_metrics.go     |  9 ++---
 .../models/domainlayer/codequality/cq_projects.go  |  2 +-
 .../20250527_extend_field_size_for_cq.go}          | 37 ++++++++++----------
 backend/core/models/migrationscripts/register.go   |  1 +
 .../20250527_extend_field_size.go}                 | 39 +++++++++++-----------
 .../sonarqube/models/migrationscripts/register.go  |  1 +
 .../sonarqube/models/sonarqube_file_metrics.go     |  4 +--
 7 files changed, 49 insertions(+), 44 deletions(-)

diff --git a/backend/core/models/domainlayer/codequality/cq_file_metrics.go 
b/backend/core/models/domainlayer/codequality/cq_file_metrics.go
index c83a79813..293d1a7ea 100644
--- a/backend/core/models/domainlayer/codequality/cq_file_metrics.go
+++ b/backend/core/models/domainlayer/codequality/cq_file_metrics.go
@@ -18,13 +18,14 @@ limitations under the License.
 package codequality
 
 import (
-       "github.com/apache/incubator-devlake/core/models/domainlayer"
+       "github.com/apache/incubator-devlake/core/models/common"
 )
 
 type CqFileMetrics struct {
-       domainlayer.DomainEntity
-       ProjectKey                          string 
`gorm:"index;type:varchar(255)"` //domain project key
-       FileName                            string `gorm:"type:varchar(255)"`
+       common.NoPKModel
+       Id                                  string `json:"id" 
gorm:"primaryKey;type:varchar(3000);comment:This key is generated based on 
details from the original plugin"` // format: <Plugin>:<Entity>:<PK0>:<PK1>
+       ProjectKey                          string 
`gorm:"index;type:varchar(255)"`                                                
                                         //domain project key
+       FileName                            string `gorm:"type:varchar(2000)"`
        FilePath                            string
        FileLanguage                        string `gorm:"type:varchar(20)"`
        CodeSmells                          int
diff --git a/backend/core/models/domainlayer/codequality/cq_projects.go 
b/backend/core/models/domainlayer/codequality/cq_projects.go
index fe80dd1bb..d0f0be4d3 100644
--- a/backend/core/models/domainlayer/codequality/cq_projects.go
+++ b/backend/core/models/domainlayer/codequality/cq_projects.go
@@ -27,7 +27,7 @@ var _ plugin.Scope = (*CqProject)(nil)
 
 type CqProject struct {
        domainlayer.DomainEntityExtended
-       Name             string `gorm:"type:varchar(255)"`
+       Name             string `gorm:"type:varchar(2000)"`
        Qualifier        string `gorm:"type:varchar(255)"`
        Visibility       string `gorm:"type:varchar(64)"`
        LastAnalysisDate *common.Iso8601Time
diff --git a/backend/core/models/domainlayer/codequality/cq_projects.go 
b/backend/core/models/migrationscripts/20250527_extend_field_size_for_cq.go
similarity index 51%
copy from backend/core/models/domainlayer/codequality/cq_projects.go
copy to 
backend/core/models/migrationscripts/20250527_extend_field_size_for_cq.go
index fe80dd1bb..838eb6010 100644
--- a/backend/core/models/domainlayer/codequality/cq_projects.go
+++ b/backend/core/models/migrationscripts/20250527_extend_field_size_for_cq.go
@@ -15,33 +15,34 @@ 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 = (*extendFieldSizeForCq)(nil)
 
-type CqProject struct {
-       domainlayer.DomainEntityExtended
-       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 extendFieldSizeForCq struct{}
 
-func (CqProject) TableName() string {
-       return "cq_projects"
+func (script *extendFieldSizeForCq) Up(basicRes context.BasicRes) errors.Error 
{
+       err := basicRes.GetDal().ModifyColumnType("cq_projects", "name", 
"varchar(2000)")
+       if err != nil {
+               return err
+       }
+       err = basicRes.GetDal().ModifyColumnType("cq_file_metrics", 
"file_name", "varchar(2000)")
+       if err != nil {
+               return err
+       }
+       return basicRes.GetDal().ModifyColumnType("cq_file_metrics", "id", 
"varchar(3000)")
 }
 
-func (s *CqProject) ScopeId() string {
-       return s.Id
+func (*extendFieldSizeForCq) Version() uint64 {
+       return 20250527000000
 }
 
-func (s *CqProject) ScopeName() string {
-       return s.Name
+func (*extendFieldSizeForCq) Name() string {
+       return "extend field size for cq"
 }
diff --git a/backend/core/models/migrationscripts/register.go 
b/backend/core/models/migrationscripts/register.go
index 191d0817b..fd90c8fd2 100644
--- a/backend/core/models/migrationscripts/register.go
+++ b/backend/core/models/migrationscripts/register.go
@@ -137,5 +137,6 @@ func All() []plugin.MigrationScript {
                new(addDueDateToIssues),
                new(createQaTables),
                new(increaseCqIssueComponentLength),
+               new(extendFieldSizeForCq),
        }
 }
diff --git a/backend/core/models/domainlayer/codequality/cq_projects.go 
b/backend/plugins/sonarqube/models/migrationscripts/20250527_extend_field_size.go
similarity index 52%
copy from backend/core/models/domainlayer/codequality/cq_projects.go
copy to 
backend/plugins/sonarqube/models/migrationscripts/20250527_extend_field_size.go
index fe80dd1bb..502a894cd 100644
--- a/backend/core/models/domainlayer/codequality/cq_projects.go
+++ 
b/backend/plugins/sonarqube/models/migrationscripts/20250527_extend_field_size.go
@@ -15,33 +15,34 @@ 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 = (*extendSonarqubeFieldSize)(nil)
 
-type CqProject struct {
-       domainlayer.DomainEntityExtended
-       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 extendSonarqubeFieldSize struct{}
 
-func (CqProject) TableName() string {
-       return "cq_projects"
+func (script *extendSonarqubeFieldSize) Up(basicRes context.BasicRes) 
errors.Error {
+       db := basicRes.GetDal()
+       
+       err := db.ModifyColumnType("_tool_sonarqube_file_metrics", 
"file_metrics_key", "varchar(3000)")
+       if err != nil {
+               return err
+       }
+       
+       err = db.ModifyColumnType("_tool_sonarqube_file_metrics", "file_name", 
"varchar(2000)")
+       return err
 }
 
-func (s *CqProject) ScopeId() string {
-       return s.Id
+func (*extendSonarqubeFieldSize) Version() uint64 {
+       return 20250527000000
 }
 
-func (s *CqProject) ScopeName() string {
-       return s.Name
-}
+func (*extendSonarqubeFieldSize) Name() string {
+       return "extend field size for sonarqube file metrics"
+}
\ No newline at end of file
diff --git a/backend/plugins/sonarqube/models/migrationscripts/register.go 
b/backend/plugins/sonarqube/models/migrationscripts/register.go
index 849f11248..7c48de842 100644
--- a/backend/plugins/sonarqube/models/migrationscripts/register.go
+++ b/backend/plugins/sonarqube/models/migrationscripts/register.go
@@ -38,5 +38,6 @@ func All() []plugin.MigrationScript {
                new(increaseProjectKeyLength),
                new(addOrgToConn),
                new(addIssueImpacts),
+               new(extendSonarqubeFieldSize),
        }
 }
diff --git a/backend/plugins/sonarqube/models/sonarqube_file_metrics.go 
b/backend/plugins/sonarqube/models/sonarqube_file_metrics.go
index a7acef9c1..c064e2679 100644
--- a/backend/plugins/sonarqube/models/sonarqube_file_metrics.go
+++ b/backend/plugins/sonarqube/models/sonarqube_file_metrics.go
@@ -23,9 +23,9 @@ import (
 
 type SonarqubeFileMetrics struct {
        ConnectionId             uint64 `gorm:"primaryKey"`
-       FileMetricsKey           string `gorm:"primaryKey;type:varchar(500)"`
+       FileMetricsKey           string `gorm:"primaryKey;type:varchar(3000)"`
        ProjectKey               string `gorm:"index"`
-       FileName                 string
+       FileName                 string `gorm:"type:varchar(2000)"`
        FilePath                 string
        FileLanguage             string
        CodeSmells               int

Reply via email to