Skip to content

Commit

Permalink
new callback after each operation
Browse files Browse the repository at this point in the history
  • Loading branch information
DoodleBobBuffPants committed Dec 10, 2020
1 parent f53f4d4 commit 47485ce
Show file tree
Hide file tree
Showing 25 changed files with 118 additions and 49 deletions.
46 changes: 39 additions & 7 deletions flyway-core/src/main/java/org/flywaydb/core/Flyway.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import org.flywaydb.core.api.FlywayException;
import org.flywaydb.core.api.MigrationInfoService;
import org.flywaydb.core.api.callback.Callback;
import org.flywaydb.core.api.callback.Event;
import org.flywaydb.core.api.configuration.ClassicConfiguration;
import org.flywaydb.core.api.configuration.Configuration;
import org.flywaydb.core.api.configuration.FluentConfiguration;
Expand Down Expand Up @@ -211,8 +212,12 @@ public MigrateResult execute(MigrationResolver migrationResolver,
}
}

return new DbMigrate(database, schemaHistory, schemas[0], migrationResolver, configuration,
callbackExecutor).migrate();
MigrateResult result = new DbMigrate(database, schemaHistory, schemas[0], migrationResolver, configuration,
callbackExecutor).migrate();

callbackExecutor.onOperationFinishEvent(Event.AFTER_MIGRATE_OPERATION_FINISH, result);

return result;
}
}, true);
}
Expand Down Expand Up @@ -246,6 +251,10 @@ public UndoResult undo() throws FlywayException {







}

/**
Expand Down Expand Up @@ -274,6 +283,8 @@ public Void execute(MigrationResolver migrationResolver, SchemaHistory schemaHis
throw new FlywayValidateException(validateResult.errorDetails, validateResult.getAllErrorMessages());
}

callbackExecutor.onOperationFinishEvent(Event.AFTER_VALIDATE_OPERATION_FINISH, validateResult);

return null;
}
}, true);
Expand All @@ -299,8 +310,12 @@ public ValidateResult validateWithResult() throws FlywayException {
public ValidateResult execute(MigrationResolver migrationResolver, SchemaHistory schemaHistory, Database database,
Schema[] schemas, CallbackExecutor callbackExecutor,
StatementInterceptor statementInterceptor) {
return doValidate(database, migrationResolver, schemaHistory, schemas, callbackExecutor,
ValidateResult validateResult = doValidate(database, migrationResolver, schemaHistory, schemas, callbackExecutor,
configuration.isIgnorePendingMigrations());

callbackExecutor.onOperationFinishEvent(Event.AFTER_VALIDATE_OPERATION_FINISH, validateResult);

return validateResult;
}
}, true);
}
Expand Down Expand Up @@ -344,7 +359,11 @@ public CleanResult clean() {
public CleanResult execute(MigrationResolver migrationResolver, SchemaHistory schemaHistory, Database database,
Schema[] schemas, CallbackExecutor callbackExecutor,
StatementInterceptor statementInterceptor) {
return doClean(database, schemaHistory, schemas, callbackExecutor);
CleanResult cleanResult = doClean(database, schemaHistory, schemas, callbackExecutor);

callbackExecutor.onOperationFinishEvent(Event.AFTER_CLEAN_OPERATION_FINISH, cleanResult);

return cleanResult;
}
}, false);
}
Expand All @@ -362,7 +381,12 @@ public MigrationInfoService info() {
public MigrationInfoService execute(MigrationResolver migrationResolver, SchemaHistory schemaHistory,
final Database database, final Schema[] schemas, CallbackExecutor callbackExecutor,
StatementInterceptor statementInterceptor) {
return new DbInfo(migrationResolver, schemaHistory, configuration, database, callbackExecutor, schemas).info();
MigrationInfoService migrationInfoService = new DbInfo(migrationResolver, schemaHistory, configuration, database,
callbackExecutor, schemas).info();

callbackExecutor.onOperationFinishEvent(Event.AFTER_INFO_OPERATION_FINISH, migrationInfoService.getInfoResult());

return migrationInfoService;
}
}, true);
}
Expand All @@ -389,7 +413,11 @@ public BaselineResult execute(MigrationResolver migrationResolver,
"See http://flywaydb.org/documentation/migrations#the-createschemas-option-and-the-schema-history-table");
}

return doBaseline(schemaHistory, callbackExecutor, database);
BaselineResult baselineResult = doBaseline(schemaHistory, callbackExecutor, database);

callbackExecutor.onOperationFinishEvent(Event.AFTER_BASELINE_OPERATION_FINISH, baselineResult);

return baselineResult;
}
}, false);
}
Expand All @@ -410,7 +438,11 @@ public RepairResult repair() throws FlywayException {
public RepairResult execute(MigrationResolver migrationResolver,
SchemaHistory schemaHistory, Database database, Schema[] schemas, CallbackExecutor callbackExecutor,
StatementInterceptor statementInterceptor) {
return new DbRepair(database, migrationResolver, schemaHistory, callbackExecutor, configuration).repair();
RepairResult repairResult = new DbRepair(database, migrationResolver, schemaHistory, callbackExecutor, configuration).repair();

callbackExecutor.onOperationFinishEvent(Event.AFTER_REPAIR_OPERATION_FINISH, repairResult);

return repairResult;
}
}, true);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import org.flywaydb.core.api.MigrationInfo;
import org.flywaydb.core.api.configuration.Configuration;
import org.flywaydb.core.api.output.OperationResult;

import java.sql.Connection;

Expand Down Expand Up @@ -48,4 +49,9 @@ public interface Context {
* <p><i>Flyway Teams only</i></p>
*/
Statement getStatement();

/**
* @return The OperationResult object for the finished operation. Only relevant for the AFTER_*_OPERATION_FINISH events.
*/
OperationResult getOperationResult();
}
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,35 @@ public enum Event {
/**
* Fired after info has failed. This event will be fired in a separate transaction from the actual info operation.
*/
AFTER_INFO_ERROR("afterInfoError");
AFTER_INFO_ERROR("afterInfoError"),
/**
* Fired after a migrate operation has finished.
*/
AFTER_MIGRATE_OPERATION_FINISH("afterMigrateOperationFinish"),
/**
* Fired after an info operation has finished.
*/
AFTER_INFO_OPERATION_FINISH("afterInfoOperationFinish"),
/**
* Fired after a clean operation has finished.
*/
AFTER_CLEAN_OPERATION_FINISH("afterInfoOperationFinish"),
/**
* Fired after a validate operation has finished.
*/
AFTER_VALIDATE_OPERATION_FINISH("afterInfoOperationFinish"),
/**
* Fired after a validate operation has finished.
*/
AFTER_UNDO_OPERATION_FINISH("afterInfoOperationFinish"),
/**
* Fired after a validate operation has finished.
*/
AFTER_REPAIR_OPERATION_FINISH("afterInfoOperationFinish"),
/**
* Fired after a validate operation has finished.
*/
AFTER_BASELINE_OPERATION_FINISH("afterInfoOperationFinish");

private final String id;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
package org.flywaydb.core.api.output;

public class BaselineResult extends OperationResultBase {

public boolean successfullyBaselined;
public String baselineVersion = null;

Expand All @@ -25,5 +24,4 @@ public BaselineResult(String flywayVersion, String database) {
this.database = database;
this.operation = "baseline";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import java.util.ArrayList;

public class CleanResult extends OperationResultBase {

public ArrayList<String> schemasCleaned = new ArrayList<>();
public ArrayList<String> schemasDropped = new ArrayList<>();

Expand All @@ -27,5 +26,4 @@ public CleanResult(String flywayVersion, String database) {
this.database = database;
this.operation = "clean";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -67,19 +67,16 @@ public static MigrateResult createMigrateResult(String databaseName, Configurati

public static CleanResult createCleanResult(String databaseName) {
String flywayVersion = VersionPrinter.getVersion();

return new CleanResult(flywayVersion, databaseName);
}

public static UndoResult createUndoResult(String databaseName, Configuration configuration) {
String flywayVersion = VersionPrinter.getVersion();

return new UndoResult(flywayVersion, databaseName, String.join(", ", configuration.getSchemas()));
}

public static BaselineResult createBaselineResult(String databaseName) {
String flywayVersion = VersionPrinter.getVersion();

return new BaselineResult(flywayVersion, databaseName);
}

Expand All @@ -94,7 +91,6 @@ public static ValidateResult createValidateResult(String databaseName, ErrorDeta

public static RepairResult createRepairResult(String databaseName) {
String flywayVersion = VersionPrinter.getVersion();

return new RepairResult(flywayVersion, databaseName);
}

Expand Down Expand Up @@ -131,11 +127,12 @@ public static MigrateOutput createMigrateOutput(MigrationInfo migrationInfo, int
executionTime);
}

public static UndoOutput createUndoOutput(ResolvedMigration migrationInfo) {
public static UndoOutput createUndoOutput(ResolvedMigration migrationInfo, int executionTime) {
return new UndoOutput(
migrationInfo.getVersion().getVersion(),
migrationInfo.getDescription(),
migrationInfo.getPhysicalLocation() != null ? migrationInfo.getPhysicalLocation() : "");
migrationInfo.getPhysicalLocation() != null ? migrationInfo.getPhysicalLocation() : "",
executionTime);
}

public static ValidateOutput createValidateOutput(MigrationInfo migrationInfo, ErrorDetails validateError) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,5 @@
import java.util.LinkedList;

public class CompositeResult extends OperationResultBase {

public LinkedList<OperationResultBase> individualResults = new LinkedList<>();

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import java.nio.charset.StandardCharsets;

public class ErrorOutput implements OperationResult {

public static class ErrorOutputItem {
public ErrorCode errorCode;
public String message;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
package org.flywaydb.core.api.output;

public class InfoOutput {

public String category;
public String version;
public String description;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import java.util.List;

public class InfoResult extends OperationResultBase {

public String schemaVersion;
public String schemaName;
public List<InfoOutput> migrations;
Expand All @@ -38,5 +37,4 @@ public InfoResult(String flywayVersion,
this.operation = "info";
this.allSchemasEmpty = allSchemasEmpty;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
package org.flywaydb.core.api.output;

public class MigrateOutput {

public String category;
public String version;
public String description;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import java.util.List;

public class MigrateResult extends OperationResultBase {

public String initialSchemaVersion;
public String targetSchemaVersion;
public String schemaName;
Expand All @@ -35,5 +34,4 @@ public MigrateResult(String flywayVersion,
this.migrations = new ArrayList<>();
this.operation = "migrate";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,5 @@
*/
package org.flywaydb.core.api.output;

// This interface provides little explicit functionality, it serves to mark which classes are outputtable as JSON
public interface OperationResult {

}
// This interface provides little explicit functionality, it serves to mark which classes are output-able as JSON
public interface OperationResult { }
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import java.util.List;

public abstract class OperationResultBase implements OperationResult {

public String flywayVersion;
public String database;
public List<String> warnings;
Expand All @@ -32,5 +31,4 @@ public OperationResultBase() {
public void addWarning(String warning) {
warnings.add(warning);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
package org.flywaydb.core.api.output;

public class RepairOutput {

public String version;
public String description;
public String filepath;
Expand All @@ -26,5 +25,4 @@ public RepairOutput(String version, String description, String filepath) {
this.description = description;
this.filepath = filepath;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import java.util.List;

public class RepairResult extends OperationResultBase {

public List<String> repairActions;
public List<RepairOutput> migrationsRemoved;
public List<RepairOutput> migrationsDeleted;
Expand All @@ -42,5 +41,4 @@ public void setRepairActions(DbRepair.CompletedRepairActions completedRepairActi
if (completedRepairActions.deletedMissingMigrations) repairActions.add(completedRepairActions.deletedMessage());
if (completedRepairActions.alignedAppliedMigrationChecksums) repairActions.add(completedRepairActions.alignedMessage());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@
package org.flywaydb.core.api.output;

public class UndoOutput {

public String version;
public String description;
public String filepath;
public int executionTime;

public UndoOutput(String version, String description, String filepath) {
public UndoOutput(String version, String description, String filepath, int executionTime) {
this.version = version;
this.description = description;
this.filepath = filepath;
this.executionTime = executionTime;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import java.util.List;

public class UndoResult extends OperationResultBase {

public String initialSchemaVersion;
public String targetSchemaVersion;
public String schemaName;
Expand All @@ -33,5 +32,4 @@ public UndoResult(String flywayVersion, String database, String schemaName) {
this.undoneMigrations = new ArrayList<>();
this.operation = "undo";
}

}

0 comments on commit 47485ce

Please sign in to comment.