[DEV] update migraation model and manage sqlite support update with milisecond
This commit is contained in:
parent
01de431f5a
commit
ed3bfa0604
@ -193,7 +193,8 @@ public class DataFactory {
|
||||
triggerBuilder.append(tableName);
|
||||
triggerBuilder.append(" SET ");
|
||||
triggerBuilder.append(name);
|
||||
triggerBuilder.append(" = datetime('now') WHERE id = NEW.id; \n");
|
||||
//triggerBuilder.append(" = datetime('now') WHERE id = NEW.id; \n");
|
||||
triggerBuilder.append(" = strftime('%Y-%m-%d %H:%M:%f', 'now') WHERE id = NEW.id; \n");
|
||||
triggerBuilder.append("END;");
|
||||
|
||||
postOtherTables.add(triggerBuilder.toString());
|
||||
|
@ -84,7 +84,10 @@ public class MigrationEngine {
|
||||
} catch (final Exception ex) {
|
||||
ex.printStackTrace();
|
||||
while (true) {
|
||||
LOGGER.error("Fail to create the local DB SQL model for migaration ==> wait administrator interventions");
|
||||
LOGGER.error("ERROR: {}", ex.getMessage());
|
||||
LOGGER.error("========================================================================");
|
||||
LOGGER.error("== Fail to migrate ==> wait administrator interventions ==");
|
||||
LOGGER.error("========================================================================");
|
||||
Thread.sleep(60 * 60 * 1000);
|
||||
}
|
||||
}
|
||||
@ -95,7 +98,6 @@ public class MigrationEngine {
|
||||
* @throws IOException Error if access on the DB */
|
||||
public void migrateErrorThrow(final DBConfig config) throws MigrationException {
|
||||
LOGGER.info("Execute migration ... [BEGIN]");
|
||||
|
||||
// check the integrity of the migrations:
|
||||
for (final MigrationInterface elem : this.datas) {
|
||||
if (elem == null) {
|
||||
@ -247,8 +249,16 @@ public class MigrationEngine {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if (elem.applyMigration(entry, log, migrationResult)) {
|
||||
boolean ret = true;
|
||||
try {
|
||||
ret = elem.applyMigration(entry, log, migrationResult);
|
||||
} catch (final Exception e) {
|
||||
log.append("\nFail in the migration apply ");
|
||||
log.append(e.getLocalizedMessage());
|
||||
e.printStackTrace();
|
||||
throw new MigrationException("Migration fial: '" + migrationResult.name + "' defect @" + migrationResult.stepId + "/" + migrationResult.count);
|
||||
}
|
||||
if (ret) {
|
||||
migrationResult.terminated = true;
|
||||
try {
|
||||
DataAccess.update(migrationResult, migrationResult.id, List.of("terminated"));
|
||||
|
@ -13,13 +13,13 @@ public interface MigrationInterface {
|
||||
* @param log Stored data in the BDD for the migration progression.
|
||||
* @param migration Migration post data on each step...
|
||||
* @return true if migration is finished. */
|
||||
boolean applyMigration(DBEntry entry, StringBuilder log, Migration model);
|
||||
boolean applyMigration(DBEntry entry, StringBuilder log, Migration model) throws Exception;
|
||||
|
||||
/** Remove a migration the system to the previous version.
|
||||
* @param entry DB interface for the migration.
|
||||
* @param log Stored data in the BDD for the migration progression.
|
||||
* @return true if migration is finished. */
|
||||
boolean revertMigration(DBEntry entry, StringBuilder log);
|
||||
boolean revertMigration(DBEntry entry, StringBuilder log) throws Exception;
|
||||
|
||||
/** Get the number of step in the migration process.
|
||||
* @return count of SQL access. */
|
||||
|
@ -13,7 +13,9 @@ import org.kar.archidata.util.ConfigBaseVariable;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
record Action(String action, List<String> filterDB) {
|
||||
record Action(
|
||||
String action,
|
||||
List<String> filterDB) {
|
||||
public Action(final String action) {
|
||||
this(action, List.of());
|
||||
}
|
||||
@ -39,8 +41,17 @@ public class MigrationSqlStep implements MigrationInterface {
|
||||
}
|
||||
}
|
||||
|
||||
public void generateStep() throws Exception {
|
||||
throw new Exception("Forward is not implemented");
|
||||
}
|
||||
|
||||
public void generateRevertStep() throws Exception {
|
||||
throw new Exception("Backward is not implemented");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applyMigration(final DBEntry entry, final StringBuilder log, final Migration model) {
|
||||
public boolean applyMigration(final DBEntry entry, final StringBuilder log, final Migration model) throws Exception {
|
||||
generateStep();
|
||||
for (int iii = 0; iii < this.actions.size(); iii++) {
|
||||
log.append("action [" + (iii + 1) + "/" + this.actions.size() + "]\n");
|
||||
LOGGER.info(" >>>> SQL ACTION : {}/{}", iii + 1, this.actions.size());
|
||||
@ -98,7 +109,8 @@ public class MigrationSqlStep implements MigrationInterface {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean revertMigration(final DBEntry entry, final StringBuilder log) {
|
||||
public boolean revertMigration(final DBEntry entry, final StringBuilder log) throws Exception {
|
||||
generateRevertStep();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -108,12 +108,7 @@ public class TestSimpleTable {
|
||||
@Order(3)
|
||||
@Test
|
||||
public void testUpdateData() throws Exception {
|
||||
if ("sqlite".equalsIgnoreCase(ConfigBaseVariable.getDBType())) {
|
||||
Thread.sleep(Duration.ofMillis(1100));
|
||||
} else {
|
||||
Thread.sleep(Duration.ofMillis(15));
|
||||
}
|
||||
|
||||
Thread.sleep(Duration.ofMillis(15));
|
||||
// Delete the entry:
|
||||
final SimpleTable test = new SimpleTable();
|
||||
test.data = TestSimpleTable.DATA_INJECTED_2;
|
||||
|
@ -111,11 +111,7 @@ public class TestSimpleTableSoftDelete {
|
||||
@Order(3)
|
||||
@Test
|
||||
public void testUpdateData() throws Exception {
|
||||
if ("sqlite".equalsIgnoreCase(ConfigBaseVariable.getDBType())) {
|
||||
Thread.sleep(Duration.ofMillis(1100));
|
||||
} else {
|
||||
Thread.sleep(Duration.ofMillis(15));
|
||||
}
|
||||
Thread.sleep(Duration.ofMillis(15));
|
||||
|
||||
// Delete the entry:
|
||||
final SimpleTableSoftDelete test = new SimpleTableSoftDelete();
|
||||
|
@ -11,7 +11,12 @@ class InitializationCurrent extends MigrationSqlStep {
|
||||
return "Initialization";
|
||||
}
|
||||
|
||||
public InitializationCurrent() throws Exception {
|
||||
public InitializationCurrent() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateStep() throws Exception {
|
||||
addClass(TypesMigrationInitialisationCurrent.class);
|
||||
addAction("""
|
||||
ALTER TABLE `TestTableMigration` AUTO_INCREMENT = 1000;
|
||||
|
@ -11,7 +11,12 @@ class InitializationFirst extends MigrationSqlStep {
|
||||
return "Initialization";
|
||||
}
|
||||
|
||||
public InitializationFirst() throws Exception {
|
||||
public InitializationFirst() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateStep() throws Exception {
|
||||
addClass(TypesMigrationInitialisationFirst.class);
|
||||
addAction("""
|
||||
ALTER TABLE `TestTableMigration` AUTO_INCREMENT = 1000;
|
||||
|
@ -9,7 +9,12 @@ class Migration1 extends MigrationSqlStep {
|
||||
return "first migratiion";
|
||||
}
|
||||
|
||||
public Migration1() throws Exception {
|
||||
public Migration1() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateStep() throws Exception {
|
||||
|
||||
addAction("""
|
||||
ALTER TABLE `TestTableMigration`
|
||||
|
@ -9,7 +9,12 @@ class Migration2 extends MigrationSqlStep {
|
||||
return "Second migration";
|
||||
}
|
||||
|
||||
public Migration2() throws Exception {
|
||||
public Migration2() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateStep() throws Exception {
|
||||
|
||||
addAction("""
|
||||
ALTER TABLE `TestTableMigration`
|
||||
|
@ -9,7 +9,12 @@ class MigrationFail extends MigrationSqlStep {
|
||||
return "Fail migration Test";
|
||||
}
|
||||
|
||||
public MigrationFail() throws Exception {
|
||||
public MigrationFail() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateStep() throws Exception {
|
||||
|
||||
addAction("""
|
||||
ALTER TABLE `TestTableMigrationqs`
|
||||
|
Loading…
x
Reference in New Issue
Block a user