package org.constellation.database.model;
import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.resolver.MigrationResolver;
import org.flywaydb.core.internal.dbsupport.DbSupport;
import org.flywaydb.core.internal.dbsupport.DbSupportFactory;
import org.flywaydb.core.internal.resolver.sql.SqlMigrationResolver;
import org.flywaydb.core.internal.util.Location;
import org.flywaydb.core.internal.util.PlaceholderReplacer;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
/**
* @author Quentin Boileau (Geomatys)
*/
public class FlywayUtils {
public static Flyway createFlywayConfig(DataSource dataSource) throws SQLException {
final String locationString = "org/constellation/database/model/migration";
Flyway flyway = new Flyway();
flyway.setDataSource(dataSource);
flyway.setLocations(locationString);
final HashMap<String, String> placeholders = new HashMap<>();
final PlaceholderReplacer defaultReplacer = new PlaceholderReplacer(placeholders, "${", "}");
final String encoding = "UTF-8";
final String prefix = "T";
final String separator = "__";
final String suffix = ".sql";
try (final Connection connection = dataSource.getConnection()) {
DbSupport dbSupport = DbSupportFactory.createDbSupport(connection, false);
final MigrationResolver sqlResolver = new SqlMigrationResolver(
dbSupport,
flyway.getClassLoader(),
new Location(locationString),
defaultReplacer,
encoding,
prefix,
separator,
suffix);
flyway.setResolvers(sqlResolver);
}
return flyway;
}
}