From 54985c8c411d90fbf43fd68875babd1de7cf6c71 Mon Sep 17 00:00:00 2001 From: abeizn Date: Thu, 16 Mar 2023 17:03:03 +0800 Subject: [PATCH] fix: sonarqube modify character set (#4685) --- ..._tables.go => 20230227_add_init_tables.go} | 0 .../20230316_modify_character_set.go | 90 +++++++++++++++++++ .../models/migrationscripts/register.go | 1 + 3 files changed, 91 insertions(+) rename backend/plugins/sonarqube/models/migrationscripts/{20230111_add_init_tables.go => 20230227_add_init_tables.go} (100%) create mode 100644 backend/plugins/sonarqube/models/migrationscripts/20230316_modify_character_set.go diff --git a/backend/plugins/sonarqube/models/migrationscripts/20230111_add_init_tables.go b/backend/plugins/sonarqube/models/migrationscripts/20230227_add_init_tables.go similarity index 100% rename from backend/plugins/sonarqube/models/migrationscripts/20230111_add_init_tables.go rename to backend/plugins/sonarqube/models/migrationscripts/20230227_add_init_tables.go diff --git a/backend/plugins/sonarqube/models/migrationscripts/20230316_modify_character_set.go b/backend/plugins/sonarqube/models/migrationscripts/20230316_modify_character_set.go new file mode 100644 index 00000000000..fa648e83835 --- /dev/null +++ b/backend/plugins/sonarqube/models/migrationscripts/20230316_modify_character_set.go @@ -0,0 +1,90 @@ +/* +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package migrationscripts + +import ( + "net/url" + + "github.com/apache/incubator-devlake/core/context" + "github.com/apache/incubator-devlake/core/errors" +) + +type modifyCharacterSet struct{} + +func (*modifyCharacterSet) Up(basicRes context.BasicRes) errors.Error { + dbUrl := basicRes.GetConfig("DB_URL") + if dbUrl == "" { + return errors.BadInput.New("DB_URL is required") + } + u, err1 := url.Parse(dbUrl) + if err1 != nil { + return errors.Convert(err1) + } + if u.Scheme == "mysql" { + err := basicRes.GetDal().Exec(`ALTER TABLE _tool_sonarqube_projects CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;`) + if err != nil { + return err + } + err = basicRes.GetDal().Exec(`ALTER TABLE _tool_sonarqube_issues CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;`) + if err != nil { + return err + } + err = basicRes.GetDal().Exec(`ALTER TABLE _tool_sonarqube_issue_code_blocks CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;`) + if err != nil { + return err + } + err = basicRes.GetDal().Exec(`ALTER TABLE _tool_sonarqube_hotspots CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;`) + if err != nil { + return err + } + err = basicRes.GetDal().Exec(`ALTER TABLE _tool_sonarqube_file_metrics CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;`) + if err != nil { + return err + } + err = basicRes.GetDal().Exec(`ALTER TABLE _tool_sonarqube_accounts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;`) + if err != nil { + return err + } + err = basicRes.GetDal().Exec(`ALTER TABLE cq_projects CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;`) + if err != nil { + return err + } + err = basicRes.GetDal().Exec(`ALTER TABLE cq_issues CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;`) + if err != nil { + return err + } + err = basicRes.GetDal().Exec(`ALTER TABLE cq_issue_code_blocks CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;`) + if err != nil { + return err + } + err = basicRes.GetDal().Exec(`ALTER TABLE cq_file_metrics CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;`) + if err != nil { + return err + } + } + return nil + +} + +func (*modifyCharacterSet) Version() uint64 { + return 20230316220071 +} + +func (*modifyCharacterSet) Name() string { + return "sonarqube modify character set" +} diff --git a/backend/plugins/sonarqube/models/migrationscripts/register.go b/backend/plugins/sonarqube/models/migrationscripts/register.go index a26815ea5da..63e8bcc23bb 100644 --- a/backend/plugins/sonarqube/models/migrationscripts/register.go +++ b/backend/plugins/sonarqube/models/migrationscripts/register.go @@ -23,5 +23,6 @@ import "github.com/apache/incubator-devlake/core/plugin" func All() []plugin.MigrationScript { return []plugin.MigrationScript{ new(addInitTables), + new(modifyCharacterSet), } }