Clean migration and pass nameHashColumn as param when needed (#13265)

This commit is contained in:
Pere Miquel Brull 2023-09-19 19:37:42 +02:00 committed by GitHub
parent 03dfd9e6b2
commit ad27b09fac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -95,11 +95,12 @@ public class MigrationUtil {
public static <T extends EntityInterface> void updateFQNHashForEntity( public static <T extends EntityInterface> void updateFQNHashForEntity(
Handle handle, Class<T> clazz, EntityDAO<T> dao, int limitParam) { Handle handle, Class<T> clazz, EntityDAO<T> dao, int limitParam) {
String nameHashColumn = dao.getNameHashColumn(); String nameHashColumn = dao.getNameHashColumn();
if (dao instanceof CollectionDAO.TestSuiteDAO) { updateFQNHashForEntity(handle, clazz, dao, limitParam, nameHashColumn);
// We have to do this since this column in changed in the dao in latest version after this , and this will fail }
// the migrations here
nameHashColumn = "nameHash"; @SneakyThrows
} public static <T extends EntityInterface> void updateFQNHashForEntity(
Handle handle, Class<T> clazz, EntityDAO<T> dao, int limitParam, String nameHashColumn) {
if (Boolean.TRUE.equals(DatasourceConfig.getInstance().isMySQL())) { if (Boolean.TRUE.equals(DatasourceConfig.getInstance().isMySQL())) {
readAndProcessEntity( readAndProcessEntity(
handle, handle,
@ -107,7 +108,8 @@ public class MigrationUtil {
clazz, clazz,
dao, dao,
false, false,
limitParam); limitParam,
nameHashColumn);
} else { } else {
readAndProcessEntity( readAndProcessEntity(
handle, handle,
@ -115,7 +117,8 @@ public class MigrationUtil {
clazz, clazz,
dao, dao,
false, false,
limitParam); limitParam,
nameHashColumn);
} }
} }
@ -123,14 +126,21 @@ public class MigrationUtil {
public static <T extends EntityInterface> void updateFQNHashForEntityWithName( public static <T extends EntityInterface> void updateFQNHashForEntityWithName(
Handle handle, Class<T> clazz, EntityDAO<T> dao, int limitParam) { Handle handle, Class<T> clazz, EntityDAO<T> dao, int limitParam) {
String nameHashColumn = dao.getNameHashColumn(); String nameHashColumn = dao.getNameHashColumn();
if (dao instanceof CollectionDAO.TestSuiteDAO) { updateFQNHashForEntityWithName(handle, clazz, dao, limitParam, nameHashColumn);
// We have to do this since this column in changed in the dao in latest version after this , and this will fail }
// the migrations here
nameHashColumn = "nameHash"; @SneakyThrows
} public static <T extends EntityInterface> void updateFQNHashForEntityWithName(
Handle handle, Class<T> clazz, EntityDAO<T> dao, int limitParam, String nameHashColumn) {
if (Boolean.TRUE.equals(DatasourceConfig.getInstance().isMySQL())) { if (Boolean.TRUE.equals(DatasourceConfig.getInstance().isMySQL())) {
readAndProcessEntity( readAndProcessEntity(
handle, String.format(MYSQL_ENTITY_UPDATE, dao.getTableName(), nameHashColumn), clazz, dao, true, limitParam); handle,
String.format(MYSQL_ENTITY_UPDATE, dao.getTableName(), nameHashColumn),
clazz,
dao,
true,
limitParam,
nameHashColumn);
} else { } else {
readAndProcessEntity( readAndProcessEntity(
handle, handle,
@ -138,14 +148,20 @@ public class MigrationUtil {
clazz, clazz,
dao, dao,
true, true,
limitParam); limitParam,
nameHashColumn);
} }
} }
public static <T extends EntityInterface> void readAndProcessEntity( public static <T extends EntityInterface> void readAndProcessEntity(
Handle handle, String updateSql, Class<T> clazz, EntityDAO<T> dao, boolean withName, int limitParam) { Handle handle,
String updateSql,
Class<T> clazz,
EntityDAO<T> dao,
boolean withName,
int limitParam,
String nameHashColumn) {
LOG.debug("Starting Migration for table : {}", dao.getTableName()); LOG.debug("Starting Migration for table : {}", dao.getTableName());
String nameHashColumn = dao.getNameHashColumn();
if (dao instanceof CollectionDAO.TestSuiteDAO) { if (dao instanceof CollectionDAO.TestSuiteDAO) {
// We have to do this since this column in changed in the dao in latest version after this , and this will fail // We have to do this since this column in changed in the dao in latest version after this , and this will fail
// the migrations here // the migrations here
@ -247,7 +263,7 @@ public class MigrationUtil {
updateFQNHashForEntity(handle, Database.class, collectionDAO.databaseDAO(), limitParam); updateFQNHashForEntity(handle, Database.class, collectionDAO.databaseDAO(), limitParam);
updateFQNHashForEntity(handle, DatabaseSchema.class, collectionDAO.databaseSchemaDAO(), limitParam); updateFQNHashForEntity(handle, DatabaseSchema.class, collectionDAO.databaseSchemaDAO(), limitParam);
updateFQNHashForEntity(handle, Table.class, collectionDAO.tableDAO(), limitParam); updateFQNHashForEntity(handle, Table.class, collectionDAO.tableDAO(), limitParam);
updateFQNHashForEntity(handle, Query.class, collectionDAO.queryDAO(), limitParam); updateFQNHashForEntity(handle, Query.class, collectionDAO.queryDAO(), limitParam, "nameHash");
updateFQNHashForEntity(handle, Topic.class, collectionDAO.topicDAO(), limitParam); updateFQNHashForEntity(handle, Topic.class, collectionDAO.topicDAO(), limitParam);
updateFQNHashForEntity(handle, Dashboard.class, collectionDAO.dashboardDAO(), limitParam); updateFQNHashForEntity(handle, Dashboard.class, collectionDAO.dashboardDAO(), limitParam);
updateFQNHashForEntity(handle, DashboardDataModel.class, collectionDAO.dashboardDataModelDAO(), limitParam); updateFQNHashForEntity(handle, DashboardDataModel.class, collectionDAO.dashboardDataModelDAO(), limitParam);
@ -272,7 +288,7 @@ public class MigrationUtil {
updateFQNHashForEntity( updateFQNHashForEntity(
handle, TestConnectionDefinition.class, collectionDAO.testConnectionDefinitionDAO(), limitParam); handle, TestConnectionDefinition.class, collectionDAO.testConnectionDefinitionDAO(), limitParam);
updateFQNHashForEntity(handle, TestDefinition.class, collectionDAO.testDefinitionDAO(), limitParam); updateFQNHashForEntity(handle, TestDefinition.class, collectionDAO.testDefinitionDAO(), limitParam);
updateFQNHashForEntity(handle, TestSuite.class, collectionDAO.testSuiteDAO(), limitParam); updateFQNHashForEntity(handle, TestSuite.class, collectionDAO.testSuiteDAO(), limitParam, "nameHash");
// Update Misc // Update Misc
updateFQNHashForEntity(handle, Policy.class, collectionDAO.policyDAO(), limitParam); updateFQNHashForEntity(handle, Policy.class, collectionDAO.policyDAO(), limitParam);