added SqlPlatform class with getters to platform specific implementations

This commit is contained in:
wea_ondara
2022-11-23 17:13:39 +01:00
parent 1b8d9f94d8
commit 99b49083ec
12 changed files with 88 additions and 9 deletions

View File

@@ -16,5 +16,4 @@
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

View File

@@ -1,9 +1,9 @@
package jef.model;
import jef.Database;
import jef.DbSet;
import jef.model.annotations.Clazz;
import jef.model.constraints.ForeignKeyConstraint;
import jef.platform.base.Database;
import jef.serializable.SerializableObject;
import lombok.Getter;

View File

@@ -1,6 +1,6 @@
package jef.model;
import jef.DatabaseOptions;
import jef.platform.base.DatabaseOptions;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

View File

@@ -0,0 +1,14 @@
package jef.platform;
import jef.platform.base.SqlTypeMapper;
import jef.platform.base.DatabaseOptions;
import jef.platform.base.migration.MigrationApplier;
import jef.platform.base.MigrationOperationTranslator;
import java.sql.Connection;
public interface SqlPlatform {
MigrationOperationTranslator getTranslator();
SqlTypeMapper getTypeMapper();
MigrationApplier getMigrationApplier(Connection connection, DatabaseOptions options);
}

View File

@@ -1,5 +1,6 @@
package jef;
package jef.platform.base;
import jef.MigrationException;
import lombok.AllArgsConstructor;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package jef;
package jef.platform.base;
import lombok.Getter;

View File

@@ -0,0 +1,11 @@
package jef.platform.base;
import jef.model.migration.operation.MigrationOperation;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public interface MigrationOperationTranslator {
PreparedStatement translate(Connection connection, MigrationOperation op) throws SQLException;
}

View File

@@ -1,4 +1,4 @@
package jef.model;
package jef.platform.base;
import java.util.Optional;

View File

@@ -1,10 +1,11 @@
package jef.mysql.migration;
package jef.platform.base.migration;
import jef.DatabaseOptions;
import jef.MigrationException;
import jef.model.migration.Migration;
import jef.model.migration.MigrationBuilder;
import jef.model.migration.operation.MigrationOperation;
import jef.platform.SqlPlatform;
import jef.platform.base.DatabaseOptions;
import lombok.AllArgsConstructor;
import lombok.Getter;
@@ -21,6 +22,7 @@ import java.util.stream.Collectors;
public abstract class MigrationApplier {
protected final Connection connection;
protected final DatabaseOptions options;
protected final SqlPlatform sqlPlatform;
public void migrate() throws MigrationException {
var migrations = findMigrations(options.getMigrationsPackage()); //TODO find all migrations, support multiple db contexts
@@ -47,7 +49,7 @@ public abstract class MigrationApplier {
connection.setAutoCommit(false);
try {
for (MigrationOperation op : operations) {
var stmt = MysqlMigrationOperationTranslator.translate(connection, op);
var stmt = sqlPlatform.getTranslator().translate(connection, op);
try {
stmt.execute();
} catch (SQLException e) {

View File

@@ -0,0 +1,14 @@
package jef.platform.nul;
import jef.MigrationException;
import jef.platform.base.Database;
public class NullDatabase extends Database {
public NullDatabase() {
super(null, null);
}
@Override
public void migrate() throws MigrationException {
}
}

View File

@@ -0,0 +1,26 @@
package jef.platform.nul;
import jef.platform.SqlPlatform;
import jef.platform.base.DatabaseOptions;
import jef.platform.base.MigrationOperationTranslator;
import jef.platform.base.SqlTypeMapper;
import jef.platform.base.migration.MigrationApplier;
import java.sql.Connection;
public class NullPlatform implements SqlPlatform {
@Override
public MigrationOperationTranslator getTranslator() {
return null;
}
@Override
public SqlTypeMapper getTypeMapper() {
return new NullTypeMapper();
}
@Override
public MigrationApplier getMigrationApplier(Connection connection, DatabaseOptions options) {
return null;
}
}

View File

@@ -0,0 +1,12 @@
package jef.platform.nul;
import jef.platform.base.SqlTypeMapper;
import java.util.Optional;
public class NullTypeMapper extends SqlTypeMapper {
@Override
public Optional<String> map(String typeName) {
return Optional.ofNullable(typeName);
}
}