Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import io.flamingock.internal.common.sql.SqlDialect;

import java.util.Map;
import java.util.Optional;

public class DatabaseConfig {
private MongoDBConfig mongodb;
Expand Down Expand Up @@ -269,16 +270,34 @@ public void setPassword(String password) {
this.password = password;
}

public SqlDialect getSqlDialect() {
return sqlDialect;
public Optional<SqlDialect> getSqlDialect() {
return sqlDialect == null ? Optional.empty() : Optional.of(sqlDialect);
Comment thread
bercianor marked this conversation as resolved.
Outdated
}

public void setSqlDialect(String sqlDialect) {
this.sqlDialect = SqlDialect.valueOf(sqlDialect.toUpperCase());
}

public SqlDialect getEffectiveSqlDialect() {
if (this.sqlDialect != null) {
return this.sqlDialect;
}
String[] parts = this.endpoint.split(":", 3);
if (parts.length < 2 || parts[1].isEmpty()) {
throw new IllegalStateException("Cannot determine SQL dialect from endpoint: " + this.endpoint);
}
String dialect = parts[1].toLowerCase();
if ("firebirdsql".equals(dialect)) dialect = "firebird";
if ("informix-sqli".equals(dialect)) dialect = "informix";
try {
return SqlDialect.valueOf(dialect.toUpperCase());
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException("Unsupported SQL Dialect: " + dialect, e);
}
Comment thread
bercianor marked this conversation as resolved.
Outdated
}

public String getDriverClassName() {
switch (sqlDialect) {
switch (this.getEffectiveSqlDialect()) {
case MYSQL:
return "com.mysql.cj.jdbc.Driver";
case MARIADB:
Expand All @@ -302,7 +321,7 @@ public String getDriverClassName() {
case DB2:
return "com.ibm.db2.jcc.DB2Driver";
default:
throw new IllegalArgumentException("Unsupported SQL Dialect: " + sqlDialect);
throw new IllegalArgumentException("Unsupported SQL Dialect: " + this.getEffectiveSqlDialect());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,7 @@ public static DataSource createSqlDataSource(DatabaseConfig.SqlConfig config) {
throw new IllegalArgumentException("Database endpoint is required");
}

if (config.getSqlDialect() == null) {
throw new IllegalArgumentException("Sql dialect is required");
}

if (!SqlDialect.SQLITE.equals(config.getSqlDialect())) {
if (!SqlDialect.SQLITE.equals(config.getEffectiveSqlDialect())) {
Comment thread
bercianor marked this conversation as resolved.
Outdated
if (config.getUsername() == null) {
throw new IllegalArgumentException("Database username is required");
}
Expand All @@ -54,16 +50,10 @@ public static DataSource createSqlDataSource(DatabaseConfig.SqlConfig config) {
try {
DataSource sqlDatasource;

if (config.getSqlDialect().equals(SqlDialect.SQLITE)) {
if (config.getEffectiveSqlDialect().equals(SqlDialect.SQLITE)) {
Comment thread
bercianor marked this conversation as resolved.
Outdated
SQLiteDataSource sqliteDatasource = new SQLiteDataSource();
sqliteDatasource.setUrl(config.getEndpoint());

try (Connection conn = sqliteDatasource.getConnection();
Statement stmt = conn.createStatement()) {
stmt.execute("PRAGMA journal_mode=WAL;");
stmt.execute("PRAGMA busy_timeout=5000;");
}

sqlDatasource = sqliteDatasource;
} else {
HikariConfig datasourceConfig = new HikariConfig();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,6 @@ void shouldCreateTestConfigs() {

assertThat(sqlConfig).isNotNull();
assertThat(sqlConfig.getAudit().getSql()).isNotNull();
assertThat(sqlConfig.getAudit().getSql().getSqlDialect()).isEqualTo(SQLSERVER);
assertThat(sqlConfig.getAudit().getSql().getEffectiveSqlDialect()).isEqualTo(SQLSERVER);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Optional;

import static io.flamingock.internal.common.sql.SqlDialect.SQLSERVER;
import static org.assertj.core.api.Assertions.*;
Expand Down Expand Up @@ -100,7 +101,7 @@ void shouldLoadValidSqlConfiguration() throws IOException {
assertThat(config.getAudit().getSql().getEndpoint()).isEqualTo("jdbc:sqlserver://localhost:1433");
assertThat(config.getAudit().getSql().getUsername()).isEqualTo("test-user");
assertThat(config.getAudit().getSql().getPassword()).isEqualTo("test-password");
assertThat(config.getAudit().getSql().getSqlDialect()).isEqualTo(SQLSERVER);
assertThat(config.getAudit().getSql().getSqlDialect()).isEqualTo(Optional.of(SQLSERVER));
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,7 @@ void shouldRunAuditListCommandWithSql(SqlDialect sqlDialect, String dialectName)
" sql:\n" +
" endpoint: \"" + sqlContainer.getJdbcUrl() + "\"\n" +
" username: \"" + sqlContainer.getUsername() + "\"\n" +
" password: \"" + sqlContainer.getPassword() + "\"\n" +
" sql-dialect: \"" + dialectName + "\"\n";
" password: \"" + sqlContainer.getPassword() + "\"\n";

Files.write(configFile, sqlConfig.getBytes());

Expand Down Expand Up @@ -182,8 +181,7 @@ void shouldHandleInvalidSqlConnectionGracefully(SqlDialect sqlDialect, String di
" sql:\n" +
" endpoint: \"jdbc:sqlserver://invalid-host:1433\"\n" +
" username: \"" + sqlContainer.getUsername() + "\"\n" +
" password: \"" + sqlContainer.getPassword() + "\"\n" +
" sql-dialect: \"" + dialectName + "\"\n";
" password: \"" + sqlContainer.getPassword() + "\"\n";

Files.write(configFile, invalidConfig.getBytes());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ public static FlamingockConfig createSqlConfig() {
sqlConfig.setEndpoint("jdbc:sqlserver://localhost:1433");
sqlConfig.setUsername("test-user");
sqlConfig.setPassword("test-password");
sqlConfig.setSqlDialect("SqlServer");
databaseConfig.setSql(sqlConfig);

config.setAudit(databaseConfig);
Expand Down
Loading