Skip to content

Commit

Permalink
Filter info output by date
Browse files Browse the repository at this point in the history
  • Loading branch information
Lyeeedar committed Oct 27, 2020
1 parent 39197c3 commit c3c9c2f
Show file tree
Hide file tree
Showing 6 changed files with 124 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,11 @@

import org.flywaydb.commandline.ConsoleLog.Level;
import org.flywaydb.core.api.FlywayException;
import org.flywaydb.core.api.MigrationVersion;
import org.flywaydb.core.internal.util.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

class CommandLineArguments {
Expand Down Expand Up @@ -73,6 +76,12 @@ public static boolean isValid(String value) {
private static String CONFIG_FILES = "configFiles";
private static String COLOR = "color";
private static String WORKING_DIRECTORY = "workingDirectory";
private static String INFO_SINCE_DATE = "infoSinceDate";
private static String INFO_UNTIL_DATE = "infoUntilDate";
private static String INFO_SINCE_VERSION = "infoSinceVersion";
private static String INFO_UNTIL_VERSION = "infoUntilVersion";

private static SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM/yyyy HH:mm");

private static List<String> VALID_OPERATIONS_AND_FLAGS = Arrays.asList(
DEBUG_FLAG,
Expand Down Expand Up @@ -166,7 +175,11 @@ private static boolean isConfigurationOptionIgnored(String configurationOptionNa
return OUTPUT_FILE.equals(configurationOptionName) ||
OUTPUT_TYPE.equals(configurationOptionName) ||
COLOR.equals(configurationOptionName) ||
WORKING_DIRECTORY.equals(configurationOptionName);
WORKING_DIRECTORY.equals(configurationOptionName) ||
INFO_SINCE_DATE.equals(configurationOptionName) ||
INFO_UNTIL_DATE.equals(configurationOptionName) ||
INFO_SINCE_VERSION.equals(configurationOptionName) ||
INFO_UNTIL_VERSION.equals(configurationOptionName);
}

private static String getConfigurationOptionNameFromArg(String arg) {
Expand Down Expand Up @@ -251,6 +264,48 @@ String getWorkingDirectory() {
return getArgumentValue(WORKING_DIRECTORY, args);
}

Date getInfoSinceDate() {
return parseDate(INFO_SINCE_DATE);
}

Date getInfoUntilDate() {
return parseDate(INFO_UNTIL_DATE);
}

MigrationVersion getInfoSinceVersion() {
return parseVersion(INFO_SINCE_VERSION);
}

MigrationVersion getInfoUntilVersion() {
return parseVersion(INFO_UNTIL_VERSION);
}

private MigrationVersion parseVersion(String argument) {
String versionStr = getArgumentValue(argument, args);

if (versionStr.isEmpty()) {
return null;
}

return MigrationVersion.fromVersion(versionStr);
}

private Date parseDate(String argument) {
String dateStr = getArgumentValue(argument, args);

if (dateStr.isEmpty()) {
return null;
}

try {
return DATE_FORMAT.parse(dateStr);
} catch (ParseException e) {
throw new FlywayException("'" + dateStr + "' is an invalid value for the " + argument + " option. " +
"The expected format is 'dd/mm/yyyy hh:mm', like '13/10/2020 16:30'. " +
"See the Flyway documentation for help: https://flywaydb.org/documentation/usage/commandline/info#filtering-output");
}
}

boolean isOutputFileSet() {
return !getOutputFile().isEmpty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,17 @@
import org.flywaydb.commandline.ConsoleLog.Level;
import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.*;


import org.flywaydb.core.api.logging.Log;
import org.flywaydb.core.api.logging.LogCreator;
import org.flywaydb.core.api.logging.LogFactory;
import org.flywaydb.core.api.output.CompositeResult;
import org.flywaydb.core.api.output.*;
import org.flywaydb.core.internal.configuration.ConfigUtils;
import org.flywaydb.core.internal.database.DatabaseTypeRegister;
import org.flywaydb.core.internal.database.base.DatabaseType;
import org.flywaydb.core.internal.info.MigrationInfoDumper;
import org.flywaydb.core.internal.license.VersionPrinter;
import org.flywaydb.core.api.output.ErrorOutput;
import org.flywaydb.core.api.output.OperationResult;
import org.flywaydb.core.api.output.OperationResultBase;
import org.flywaydb.core.internal.util.ClassUtils;
import org.flywaydb.core.internal.util.StringUtils;

Expand Down Expand Up @@ -247,14 +246,24 @@ private static OperationResultBase executeOperation(Flyway flyway, String operat
}
} else if ("info".equals(operation)) {
MigrationInfoService info = flyway.info();
result = info.getInfoResult();
MigrationInfo current = info.current();
MigrationVersion currentSchemaVersion = current == null ? MigrationVersion.EMPTY : current.getVersion();

MigrationVersion schemaVersionToOutput = currentSchemaVersion == null ? MigrationVersion.EMPTY : currentSchemaVersion;
LOG.info("Schema version: " + schemaVersionToOutput);
LOG.info("");
LOG.info(MigrationInfoDumper.dumpToAsciiTable(info.all()));







result = info.getInfoResult();
MigrationInfo[] infos = info.all();


LOG.info(MigrationInfoDumper.dumpToAsciiTable(infos));
} else if ("repair".equals(operation)) {
result = flyway.repair();
} else {
Expand All @@ -266,6 +275,16 @@ private static OperationResultBase executeOperation(Flyway flyway, String operat
return result;
}











private static void printJson(CommandLineArguments commandLineArguments, OperationResult object) {
String json = convertObjectToJsonString(object);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,13 @@
*/
package org.flywaydb.core.api;


import org.flywaydb.core.api.output.InfoResult;

interface InfoOutputProvider {
InfoResult getInfoResult();




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



/**
* Info about all migrations, including applied, current and pending with details and status.
*/
Expand All @@ -26,6 +28,16 @@ public interface MigrationInfoService extends InfoOutputProvider {
*/
MigrationInfo[] all();











/**
* Retrieves the information of the current applied migration, if any.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,7 @@
import org.flywaydb.core.internal.util.AsciiTable;
import org.flywaydb.core.internal.util.DateUtils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;

/**
* Dumps migrations in an ascii-art table in the logs and the console.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import org.flywaydb.core.api.*;
import org.flywaydb.core.api.configuration.Configuration;
import org.flywaydb.core.api.output.ValidateOutput;

import org.flywaydb.core.api.resolver.Context;
import org.flywaydb.core.api.resolver.MigrationResolver;
import org.flywaydb.core.api.resolver.ResolvedMigration;
Expand Down Expand Up @@ -434,6 +435,18 @@ public MigrationInfo[] all() {
return migrationInfos.toArray(new MigrationInfo[0]);
}













@Override
public MigrationInfo current() {
MigrationInfo current = null;
Expand Down Expand Up @@ -605,7 +618,18 @@ public List<ValidateOutput> validate() {

@Override
public InfoResult getInfoResult() {
return getInfoResult(this.all());
}

public InfoResult getInfoResult(MigrationInfo[] infos) {
CommandResultFactory commandResultFactory = new CommandResultFactory();
return commandResultFactory.createInfoResult(this.context.getConfiguration(), this.database, this.all(), this.current(), this.allSchemasEmpty);
return commandResultFactory.createInfoResult(this.context.getConfiguration(), this.database, infos, this.current(), this.allSchemasEmpty);
}







}

0 comments on commit c3c9c2f

Please sign in to comment.