refactor migration creator
This commit is contained in:
@@ -31,8 +31,8 @@ import java.util.stream.Collectors;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class MigrationBuilderGenerator {
|
||||
private final List<MigrationOperation> opsUp;
|
||||
private final List<MigrationOperation> opsDown;
|
||||
private final List<? extends MigrationOperation> opsUp;
|
||||
private final List<? extends MigrationOperation> opsDown;
|
||||
private final String name;
|
||||
private final String packageName;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package jef.model.migration.creator;
|
||||
|
||||
import jef.model.DbField;
|
||||
import jef.model.ModelBuilder;
|
||||
import jef.model.SqlTypeMapper;
|
||||
import jef.model.constraints.ForeignKeyConstraint;
|
||||
import jef.model.constraints.IndexConstraint;
|
||||
import jef.model.constraints.KeyConstraint;
|
||||
@@ -21,10 +20,13 @@ import jef.model.migration.operation.MigrationOperation;
|
||||
import jef.model.migration.operation.RenameFieldOperation;
|
||||
import jef.model.migration.operation.RenameTableOperation;
|
||||
import jef.model.migration.operation.UpdateFieldOperation;
|
||||
import jef.platform.SqlPlatform;
|
||||
import jef.platform.base.SqlTypeMapper;
|
||||
import jef.util.Check;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -33,57 +35,73 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class MigrationCreator {
|
||||
public Result createMigration(ModelBuilder from, ModelBuilder to, String name, String packageName, String currentSnapshotJava) {
|
||||
var result = new Result();
|
||||
private final SqlPlatform sqlPlatform;
|
||||
private final ModelBuilder from;
|
||||
private final ModelBuilder to;
|
||||
private final String name;
|
||||
private final String packageName;
|
||||
private final String currentSnapshotJava;
|
||||
private Result result;
|
||||
|
||||
public Result createMigration() {
|
||||
if (result != null) {
|
||||
return result;
|
||||
}
|
||||
result = new Result();
|
||||
|
||||
//create pre-migration model snapshot class
|
||||
result = generatePreMigrationSnapshot(name, packageName, currentSnapshotJava, result);
|
||||
result = generatePreMigrationSnapshot();
|
||||
|
||||
//create migration
|
||||
result = generateMigration(from, to, name, packageName, result);
|
||||
result = generateMigration();
|
||||
|
||||
//create current model snapshot class
|
||||
result = generatePostMigrationSnapshot(to, packageName, result);
|
||||
result = generatePostMigrationSnapshot();
|
||||
return result;
|
||||
}
|
||||
|
||||
private Result generatePreMigrationSnapshot(String name, String packageName, String currentSnapshotJava, Result result) {
|
||||
private Result generatePreMigrationSnapshot() {
|
||||
String preMigrationSnapshotClassName = name + "Snapshot";
|
||||
String preMigrationSnapshot;
|
||||
if (currentSnapshotJava == null || currentSnapshotJava.isBlank()) {
|
||||
preMigrationSnapshot = generateModelBuilderJava(new ModelBuilder(), name, packageName);
|
||||
preMigrationSnapshot = generateModelBuilderJava(new ModelBuilder(), preMigrationSnapshotClassName, packageName, sqlPlatform.getTypeMapper());
|
||||
} else {
|
||||
preMigrationSnapshot = currentSnapshotJava.replace("CurrentSnapshot", name + "Snapshot");
|
||||
preMigrationSnapshot = currentSnapshotJava.replace("CurrentSnapshot", preMigrationSnapshotClassName);
|
||||
}
|
||||
result.setMigrationSnapshotClassName(preMigrationSnapshotClassName);
|
||||
result.setMigrationSnapshot(preMigrationSnapshot);
|
||||
return result;
|
||||
}
|
||||
|
||||
private Result generatePostMigrationSnapshot(ModelBuilder to, String packageName, Result result) {
|
||||
result.setCurrentSnapshot(generateModelBuilderJava(to, "Current", packageName));
|
||||
private Result generatePostMigrationSnapshot() {
|
||||
result.setCurrentSnapshotClassName("CurrentSnapshot");
|
||||
result.setCurrentSnapshot(generateModelBuilderJava(to, "CurrentSnapshot", packageName, sqlPlatform.getTypeMapper()));
|
||||
return result;
|
||||
}
|
||||
|
||||
private String generateModelBuilderJava(ModelBuilder mb, String name, String packageName) {
|
||||
return new ModelBuilderGenerator(mb, name, packageName, new SqlTypeMapper()).generate().getJava();//TODO mapper
|
||||
private String generateModelBuilderJava(ModelBuilder mb, String name, String packageName, SqlTypeMapper typeMapper) {
|
||||
return new ModelBuilderGenerator(mb, name, packageName, typeMapper).generate().getJava();
|
||||
}
|
||||
|
||||
private Result generateMigration(ModelBuilder from, ModelBuilder to, String name, String packageName, Result result) {
|
||||
private Result generateMigration() {
|
||||
//reduce model builders to changes
|
||||
var mcd = new ModelChangeDetector(from, to).detect();
|
||||
var fromReduced = mcd.getFrom();
|
||||
var toReduced = mcd.getTo();
|
||||
|
||||
//create migration steps
|
||||
var migrationUpOps = new ArrayList<MigrationOperation.Builder>();
|
||||
var migrationDownOps = new ArrayList<MigrationOperation.Builder>();
|
||||
var migrationUpOps = new ArrayList<MigrationOperation.Builder<?>>();
|
||||
var migrationDownOps = new ArrayList<MigrationOperation.Builder<?>>();
|
||||
|
||||
generateMigrationSteps(fromReduced, toReduced, from, to, migrationUpOps);
|
||||
generateMigrationSteps(toReduced, fromReduced, to, from, migrationDownOps);
|
||||
|
||||
var builtUpOps = migrationUpOps.stream().map(e -> e.build()).toList();
|
||||
var builtDownOps = migrationDownOps.stream().map(e -> e.build()).toList();
|
||||
var builtUpOps = migrationUpOps.stream().map(MigrationOperation.Builder::build).toList();
|
||||
var builtDownOps = migrationDownOps.stream().map(MigrationOperation.Builder::build).toList();
|
||||
|
||||
result.setMigrationClassName(name);
|
||||
result.setMigration(new MigrationBuilderGenerator(builtUpOps, builtDownOps, name, packageName).generate().getJava());
|
||||
result.setStepsUp(builtUpOps);
|
||||
result.setStepsDown(builtDownOps);
|
||||
@@ -91,7 +109,7 @@ public class MigrationCreator {
|
||||
return result;
|
||||
}
|
||||
|
||||
private void generateMigrationSteps(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void generateMigrationSteps(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
//key drop
|
||||
addForeignKeyDropGeneration(fromReduced, toReduced, from, to, steps);
|
||||
addPrimaryKeyDropGeneration(fromReduced, toReduced, from, to, steps);
|
||||
@@ -115,7 +133,7 @@ public class MigrationCreator {
|
||||
addIndexAddGeneration(fromReduced, toReduced, from, to, steps);
|
||||
}
|
||||
|
||||
private void addTableAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addTableAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var toEntity : toReduced.getEntities()) {
|
||||
var fromEntity = fromReduced.getEntity(toEntity.getTypeName());
|
||||
|
||||
@@ -138,7 +156,7 @@ public class MigrationCreator {
|
||||
return Optional.ofNullable(e.getSqlType()).or(() -> new SqlTypeMapper().map(e.getTypeName())).orElse(null);
|
||||
}
|
||||
|
||||
private void addTableRenameGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addTableRenameGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var toEntity : toReduced.getEntities()) {
|
||||
var fromEntity = fromReduced.getEntity(toEntity.getTypeName());
|
||||
// entity added
|
||||
@@ -153,7 +171,7 @@ public class MigrationCreator {
|
||||
}
|
||||
}
|
||||
|
||||
private void addTableDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addTableDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var fromEntity : fromReduced.getEntities()) {
|
||||
var toEntity = toReduced.getEntity(fromEntity.getTypeName());
|
||||
if (toEntity == null) {
|
||||
@@ -162,7 +180,7 @@ public class MigrationCreator {
|
||||
}
|
||||
}
|
||||
|
||||
private void addFieldAddRenameUpdateDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addFieldAddRenameUpdateDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var toEntity : toReduced.getEntities()) {
|
||||
var fromEntity = fromReduced.getEntities().stream().filter(e -> e.getName().equals(toEntity.getName())).findFirst().orElse(null);
|
||||
|
||||
@@ -239,7 +257,7 @@ public class MigrationCreator {
|
||||
}
|
||||
}
|
||||
|
||||
private void addPrimaryKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addPrimaryKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var toEntity : toReduced.getEntities()) {
|
||||
var originalEntity = to.getEntities().stream().filter(e -> e.getName().equals(toEntity.getName())).findFirst().orElse(null);
|
||||
Check.notNull(originalEntity, "originalEntity"); //may never be null
|
||||
@@ -255,7 +273,7 @@ public class MigrationCreator {
|
||||
}
|
||||
}
|
||||
|
||||
private void addForeignKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addForeignKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var toEntity : toReduced.getEntities()) {
|
||||
var originalEntity = to.getEntities().stream().filter(e -> e.getName().equals(toEntity.getName())).findFirst().orElse(null);
|
||||
Check.notNull(originalEntity, "originalEntity"); //may never be null
|
||||
@@ -275,7 +293,7 @@ public class MigrationCreator {
|
||||
}
|
||||
}
|
||||
|
||||
private void addUniqueKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addUniqueKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var toEntity : toReduced.getEntities()) {
|
||||
var originalEntity = to.getEntities().stream().filter(e -> e.getName().equals(toEntity.getName())).findFirst().orElse(null);
|
||||
Check.notNull(originalEntity, "originalEntity"); //may never be null
|
||||
@@ -292,7 +310,7 @@ public class MigrationCreator {
|
||||
}
|
||||
}
|
||||
|
||||
private void addKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var toEntity : toReduced.getEntities()) {
|
||||
var originalEntity = to.getEntities().stream().filter(e -> e.getName().equals(toEntity.getName())).findFirst().orElse(null);
|
||||
Check.notNull(originalEntity, "originalEntity"); //may never be null
|
||||
@@ -309,7 +327,7 @@ public class MigrationCreator {
|
||||
}
|
||||
}
|
||||
|
||||
private void addIndexAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addIndexAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var toEntity : toReduced.getEntities()) {
|
||||
var originalEntity = to.getEntities().stream().filter(e -> e.getName().equals(toEntity.getName())).findFirst().orElse(null);
|
||||
Check.notNull(originalEntity, "originalEntity"); //may never be null
|
||||
@@ -326,7 +344,7 @@ public class MigrationCreator {
|
||||
}
|
||||
}
|
||||
|
||||
private void addPrimaryKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addPrimaryKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var fromEntity : fromReduced.getEntities()) {
|
||||
var originalEntity = from.getEntities().stream().filter(e -> e.getName().equals(fromEntity.getName())).findFirst().orElse(null);
|
||||
Check.notNull(originalEntity, "originalEntity"); //may never be null
|
||||
@@ -348,7 +366,7 @@ public class MigrationCreator {
|
||||
}
|
||||
}
|
||||
|
||||
private void addForeignKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addForeignKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var fromEntity : fromReduced.getEntities()) {
|
||||
var originalEntity = from.getEntities().stream().filter(e -> e.getName().equals(fromEntity.getName())).findFirst().orElse(null);
|
||||
Check.notNull(originalEntity, "originalEntity"); //may never be null
|
||||
@@ -373,7 +391,7 @@ public class MigrationCreator {
|
||||
// }
|
||||
}
|
||||
|
||||
private void addUniqueKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addUniqueKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var fromEntity : fromReduced.getEntities()) {
|
||||
var originalEntity = from.getEntities().stream().filter(e -> e.getName().equals(fromEntity.getName())).findFirst().orElse(null);
|
||||
Check.notNull(originalEntity, "originalEntity"); //may never be null
|
||||
@@ -398,7 +416,7 @@ public class MigrationCreator {
|
||||
// }
|
||||
}
|
||||
|
||||
private void addKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var fromEntity : fromReduced.getEntities()) {
|
||||
var originalEntity = from.getEntities().stream().filter(e -> e.getName().equals(fromEntity.getName())).findFirst().orElse(null);
|
||||
Check.notNull(originalEntity, "originalEntity"); //may never be null
|
||||
@@ -423,7 +441,7 @@ public class MigrationCreator {
|
||||
// }
|
||||
}
|
||||
|
||||
private void addIndexDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder> steps) {
|
||||
private void addIndexDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List<MigrationOperation.Builder<?>> steps) {
|
||||
for (var fromEntity : fromReduced.getEntities()) {
|
||||
var originalEntity = from.getEntities().stream().filter(e -> e.getName().equals(fromEntity.getName())).findFirst().orElse(null);
|
||||
Check.notNull(originalEntity, "originalEntity"); //may never be null
|
||||
@@ -452,11 +470,14 @@ public class MigrationCreator {
|
||||
@Setter(AccessLevel.PACKAGE)
|
||||
@NoArgsConstructor(access = AccessLevel.PACKAGE)
|
||||
public static class Result {
|
||||
private List<MigrationOperation> stepsUp = new ArrayList<>();
|
||||
private List<MigrationOperation> stepsDown = new ArrayList<>();
|
||||
private List<? extends MigrationOperation> stepsUp = new ArrayList<>();
|
||||
private List<? extends MigrationOperation> stepsDown = new ArrayList<>();
|
||||
private String migration = "";
|
||||
private String migrationClassName = "";
|
||||
private String migrationSnapshot = "";
|
||||
private String migrationSnapshotClassName = "";
|
||||
private String currentSnapshot = "";
|
||||
private String currentSnapshotClassName = "";
|
||||
}
|
||||
|
||||
@Getter
|
||||
|
||||
@@ -3,7 +3,6 @@ package jef.model.migration.creator;
|
||||
import jef.DbSet;
|
||||
import jef.model.DbContext;
|
||||
import jef.model.ModelBuilder;
|
||||
import jef.model.SqlTypeMapper;
|
||||
import jef.model.annotations.Clazz;
|
||||
import jef.model.annotations.Id;
|
||||
import jef.model.constraints.ForeignKeyConstraint;
|
||||
@@ -13,6 +12,7 @@ import jef.model.migration.operation.AddPrimaryKeyOperation;
|
||||
import jef.model.migration.operation.AddTableOperation;
|
||||
import jef.model.migration.operation.DropConstraintOperation;
|
||||
import jef.model.migration.operation.DropTableOperation;
|
||||
import jef.platform.nul.NullPlatform;
|
||||
import jef.serializable.SerializableObject;
|
||||
import lombok.Getter;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -31,8 +31,10 @@ public class MigrationCreatorAddEntityTest extends MigrationCreatorTestBase {
|
||||
ent.field("addedField", int.class.getName());
|
||||
to.getEntity("AddedEntity").setPrimaryKey(new PrimaryKeyConstraint(to.getEntity("AddedEntity"), List.of(to.getEntity("AddedEntity").getField("id"))));
|
||||
to.getEntity("AddedEntity").addForeignKey(new ForeignKeyConstraint(to.getEntity("AddedEntity"), List.of(to.getEntity("AddedEntity").getField("addedField")), to.getEntity("AddedEntity"), List.of(to.getEntity("AddedEntity").getField("id")), ForeignKeyConstraint.Action.CASCADE, ForeignKeyConstraint.Action.CASCADE));
|
||||
var mc = new MigrationCreator();
|
||||
var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper
|
||||
var platform = new NullPlatform();
|
||||
var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test",
|
||||
new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava());
|
||||
var res = mc.createMigration();
|
||||
try {
|
||||
validateUp(res);
|
||||
validateDown(res);
|
||||
|
||||
@@ -3,7 +3,6 @@ package jef.model.migration.creator;
|
||||
import jef.DbSet;
|
||||
import jef.model.DbContext;
|
||||
import jef.model.ModelBuilder;
|
||||
import jef.model.SqlTypeMapper;
|
||||
import jef.model.annotations.Clazz;
|
||||
import jef.model.annotations.Id;
|
||||
import jef.model.constraints.ForeignKeyConstraint;
|
||||
@@ -11,6 +10,8 @@ import jef.model.migration.operation.AddFieldOperation;
|
||||
import jef.model.migration.operation.AddForeignKeyOperation;
|
||||
import jef.model.migration.operation.DropConstraintOperation;
|
||||
import jef.model.migration.operation.DropFieldOperation;
|
||||
import jef.platform.base.SqlTypeMapper;
|
||||
import jef.platform.nul.NullPlatform;
|
||||
import jef.serializable.SerializableObject;
|
||||
import lombok.Getter;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -19,7 +20,7 @@ import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class MigrationCreatorAddFieldTest extends MigrationCreatorTestBase{
|
||||
public class MigrationCreatorAddFieldTest extends MigrationCreatorTestBase {
|
||||
@Test
|
||||
public void test() {
|
||||
var from = ModelBuilder.from(Ctx.class);
|
||||
@@ -27,8 +28,10 @@ public class MigrationCreatorAddFieldTest extends MigrationCreatorTestBase{
|
||||
var ent = to.getEntity(TestClass2.class);
|
||||
ent.getOrCreateField("addedField", int.class.getName());
|
||||
ent.addForeignKey(new ForeignKeyConstraint(ent, List.of(ent.getField("addedField")), ent, List.of(ent.getField("i")), ForeignKeyConstraint.Action.CASCADE, ForeignKeyConstraint.Action.CASCADE));
|
||||
var mc = new MigrationCreator();
|
||||
var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper
|
||||
var platform = new NullPlatform();
|
||||
var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test",
|
||||
new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava());
|
||||
var res = mc.createMigration();
|
||||
try {
|
||||
validateUp(res);
|
||||
validateDown(res);
|
||||
|
||||
@@ -3,12 +3,13 @@ package jef.model.migration.creator;
|
||||
import jef.DbSet;
|
||||
import jef.model.DbContext;
|
||||
import jef.model.ModelBuilder;
|
||||
import jef.model.SqlTypeMapper;
|
||||
import jef.model.annotations.Clazz;
|
||||
import jef.model.annotations.Id;
|
||||
import jef.model.constraints.ForeignKeyConstraint;
|
||||
import jef.model.migration.operation.AddForeignKeyOperation;
|
||||
import jef.model.migration.operation.DropConstraintOperation;
|
||||
import jef.platform.base.SqlTypeMapper;
|
||||
import jef.platform.nul.NullPlatform;
|
||||
import jef.serializable.SerializableObject;
|
||||
import lombok.Getter;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -24,8 +25,10 @@ public class MigrationCreatorAddForeignKeyTest extends MigrationCreatorTestBase
|
||||
var to = ModelBuilder.from(Ctx.class);
|
||||
var ent = to.getEntity(TestClass.class);
|
||||
ent.addForeignKey(new ForeignKeyConstraint(ent, List.of(ent.getField("i2")), ent, List.of(ent.getField("i")), ForeignKeyConstraint.Action.CASCADE, ForeignKeyConstraint.Action.CASCADE));
|
||||
var mc = new MigrationCreator();
|
||||
var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper
|
||||
var platform = new NullPlatform();
|
||||
var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test",
|
||||
new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava());
|
||||
var res = mc.createMigration();
|
||||
try {
|
||||
validateUp(res);
|
||||
validateDown(res);
|
||||
|
||||
@@ -3,11 +3,12 @@ package jef.model.migration.creator;
|
||||
import jef.DbSet;
|
||||
import jef.model.DbContext;
|
||||
import jef.model.ModelBuilder;
|
||||
import jef.model.SqlTypeMapper;
|
||||
import jef.model.annotations.Clazz;
|
||||
import jef.model.annotations.Id;
|
||||
import jef.model.migration.operation.AddIndexOperation;
|
||||
import jef.model.migration.operation.DropConstraintOperation;
|
||||
import jef.platform.base.SqlTypeMapper;
|
||||
import jef.platform.nul.NullPlatform;
|
||||
import jef.serializable.SerializableObject;
|
||||
import lombok.Getter;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -16,15 +17,17 @@ import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class MigrationCreatorAddIndexTest extends MigrationCreatorTestBase{
|
||||
public class MigrationCreatorAddIndexTest extends MigrationCreatorTestBase {
|
||||
@Test
|
||||
public void test() {
|
||||
var from = ModelBuilder.from(Ctx.class);
|
||||
var to = ModelBuilder.from(Ctx.class);
|
||||
var ent = to.entity(TestClass.class);
|
||||
ent.field("d", double.class.getName()).isIndex(true);
|
||||
var mc = new MigrationCreator();
|
||||
var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper
|
||||
var platform = new NullPlatform();
|
||||
var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test",
|
||||
new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava());
|
||||
var res = mc.createMigration();
|
||||
try {
|
||||
validateUp(res);
|
||||
validateDown(res);
|
||||
|
||||
@@ -3,11 +3,12 @@ package jef.model.migration.creator;
|
||||
import jef.DbSet;
|
||||
import jef.model.DbContext;
|
||||
import jef.model.ModelBuilder;
|
||||
import jef.model.SqlTypeMapper;
|
||||
import jef.model.annotations.Clazz;
|
||||
import jef.model.annotations.Id;
|
||||
import jef.model.migration.operation.AddKeyOperation;
|
||||
import jef.model.migration.operation.DropConstraintOperation;
|
||||
import jef.platform.base.SqlTypeMapper;
|
||||
import jef.platform.nul.NullPlatform;
|
||||
import jef.serializable.SerializableObject;
|
||||
import lombok.Getter;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -16,15 +17,17 @@ import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class MigrationCreatorAddKeyTest extends MigrationCreatorTestBase{
|
||||
public class MigrationCreatorAddKeyTest extends MigrationCreatorTestBase {
|
||||
@Test
|
||||
public void test() {
|
||||
var from = ModelBuilder.from(Ctx.class);
|
||||
var to = ModelBuilder.from(Ctx.class);
|
||||
var ent = to.entity(TestClass.class);
|
||||
ent.field("d", double.class.getName()).isKey(true);
|
||||
var mc = new MigrationCreator();
|
||||
var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper
|
||||
var platform = new NullPlatform();
|
||||
var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test",
|
||||
new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava());
|
||||
var res = mc.createMigration();
|
||||
try {
|
||||
validateUp(res);
|
||||
validateDown(res);
|
||||
|
||||
@@ -3,11 +3,12 @@ package jef.model.migration.creator;
|
||||
import jef.DbSet;
|
||||
import jef.model.DbContext;
|
||||
import jef.model.ModelBuilder;
|
||||
import jef.model.SqlTypeMapper;
|
||||
import jef.model.annotations.Clazz;
|
||||
import jef.model.annotations.Id;
|
||||
import jef.model.migration.operation.AddUniqueKeyOperation;
|
||||
import jef.model.migration.operation.DropConstraintOperation;
|
||||
import jef.platform.base.SqlTypeMapper;
|
||||
import jef.platform.nul.NullPlatform;
|
||||
import jef.serializable.SerializableObject;
|
||||
import lombok.Getter;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -16,15 +17,17 @@ import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class MigrationCreatorAddUniqueTest extends MigrationCreatorTestBase{
|
||||
public class MigrationCreatorAddUniqueTest extends MigrationCreatorTestBase {
|
||||
@Test
|
||||
public void test() {
|
||||
var from = ModelBuilder.from(Ctx.class);
|
||||
var to = ModelBuilder.from(Ctx.class);
|
||||
var ent = to.entity(TestClass.class);
|
||||
ent.field("d", double.class.getName()).isUnique(true);
|
||||
var mc = new MigrationCreator();
|
||||
var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper
|
||||
var platform = new NullPlatform();
|
||||
var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test",
|
||||
new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava());
|
||||
var res = mc.createMigration();
|
||||
try {
|
||||
validateUp(res);
|
||||
validateDown(res);
|
||||
|
||||
@@ -3,12 +3,13 @@ package jef.model.migration.creator;
|
||||
import jef.DbSet;
|
||||
import jef.model.DbContext;
|
||||
import jef.model.ModelBuilder;
|
||||
import jef.model.SqlTypeMapper;
|
||||
import jef.model.annotations.Clazz;
|
||||
import jef.model.annotations.Id;
|
||||
import jef.model.annotations.Index;
|
||||
import jef.model.annotations.Key;
|
||||
import jef.model.annotations.Unique;
|
||||
import jef.platform.base.SqlTypeMapper;
|
||||
import jef.platform.nul.NullPlatform;
|
||||
import jef.serializable.SerializableObject;
|
||||
import lombok.Getter;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -17,13 +18,15 @@ import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class MigrationCreatorEmptyTest extends MigrationCreatorTestBase{
|
||||
public class MigrationCreatorEmptyTest extends MigrationCreatorTestBase {
|
||||
@Test
|
||||
public void test() {
|
||||
var from = ModelBuilder.from(Ctx.class);
|
||||
var to = ModelBuilder.from(Ctx.class);
|
||||
var mc = new MigrationCreator();
|
||||
var res = mc.createMigration(from, to, "EmptyMigration", "test",new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper
|
||||
var platform = new NullPlatform();
|
||||
var mc = new MigrationCreator(platform, from, to, "EmptyMigration", "test",
|
||||
new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava());
|
||||
var res = mc.createMigration();
|
||||
try {
|
||||
assertEquals(0, res.getStepsUp().size());
|
||||
assertEquals(0, res.getStepsDown().size());
|
||||
|
||||
@@ -3,7 +3,6 @@ package jef.model.migration.creator;
|
||||
import jef.DbSet;
|
||||
import jef.model.DbContext;
|
||||
import jef.model.ModelBuilder;
|
||||
import jef.model.SqlTypeMapper;
|
||||
import jef.model.annotations.Clazz;
|
||||
import jef.model.annotations.Id;
|
||||
import jef.model.migration.operation.AddForeignKeyOperation;
|
||||
@@ -11,6 +10,7 @@ import jef.model.migration.operation.AddPrimaryKeyOperation;
|
||||
import jef.model.migration.operation.AddTableOperation;
|
||||
import jef.model.migration.operation.DropConstraintOperation;
|
||||
import jef.model.migration.operation.DropTableOperation;
|
||||
import jef.platform.nul.NullPlatform;
|
||||
import jef.serializable.SerializableObject;
|
||||
import lombok.Getter;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -24,8 +24,10 @@ public class MigrationCreatorInitialMigrationTest extends MigrationCreatorTestBa
|
||||
public void test() {
|
||||
var from = new ModelBuilder(List.of());
|
||||
var to = ModelBuilder.from(Ctx.class);
|
||||
var mc = new MigrationCreator();
|
||||
var res = mc.createMigration(from, to, "InitialMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper
|
||||
var platform = new NullPlatform();
|
||||
var mc = new MigrationCreator(platform, from, to, "InitialMigration", "test",
|
||||
new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava());
|
||||
var res = mc.createMigration();
|
||||
try {
|
||||
validateUp(res);
|
||||
validateDown(res);
|
||||
|
||||
@@ -3,13 +3,14 @@ package jef.model.migration.creator;
|
||||
import jef.DbSet;
|
||||
import jef.model.DbContext;
|
||||
import jef.model.ModelBuilder;
|
||||
import jef.model.SqlTypeMapper;
|
||||
import jef.model.annotations.Clazz;
|
||||
import jef.model.annotations.Id;
|
||||
import jef.model.migration.operation.AddForeignKeyOperation;
|
||||
import jef.model.migration.operation.AddPrimaryKeyOperation;
|
||||
import jef.model.migration.operation.DropConstraintOperation;
|
||||
import jef.model.migration.operation.RenameTableOperation;
|
||||
import jef.platform.base.SqlTypeMapper;
|
||||
import jef.platform.nul.NullPlatform;
|
||||
import jef.serializable.SerializableObject;
|
||||
import lombok.Getter;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -25,8 +26,10 @@ public class MigrationCreatorRenameEntityTest extends MigrationCreatorTestBase {
|
||||
var to = ModelBuilder.from(Ctx.class);
|
||||
var ent = to.entity(TestClass.class);
|
||||
ent.name("d2");
|
||||
var mc = new MigrationCreator();
|
||||
var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper
|
||||
var platform = new NullPlatform();
|
||||
var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test",
|
||||
new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava());
|
||||
var res = mc.createMigration();
|
||||
try {
|
||||
validateUp(res);
|
||||
validateDown(res);
|
||||
|
||||
@@ -3,7 +3,6 @@ package jef.model.migration.creator;
|
||||
import jef.DbSet;
|
||||
import jef.model.DbContext;
|
||||
import jef.model.ModelBuilder;
|
||||
import jef.model.SqlTypeMapper;
|
||||
import jef.model.annotations.Clazz;
|
||||
import jef.model.annotations.ForeignKey;
|
||||
import jef.model.annotations.Id;
|
||||
@@ -17,6 +16,8 @@ import jef.model.migration.operation.AddPrimaryKeyOperation;
|
||||
import jef.model.migration.operation.AddUniqueKeyOperation;
|
||||
import jef.model.migration.operation.DropConstraintOperation;
|
||||
import jef.model.migration.operation.RenameFieldOperation;
|
||||
import jef.platform.base.SqlTypeMapper;
|
||||
import jef.platform.nul.NullPlatform;
|
||||
import jef.serializable.SerializableObject;
|
||||
import lombok.Getter;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -31,8 +32,10 @@ public class MigrationCreatorRenameFieldConstraintsTest extends MigrationCreator
|
||||
var from = ModelBuilder.from(Ctx.class);
|
||||
var to = ModelBuilder.from(Ctx.class);
|
||||
to.getEntity(TestClass.class).getField("i").setName("i2");
|
||||
var mc = new MigrationCreator();
|
||||
var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper
|
||||
var platform = new NullPlatform();
|
||||
var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test",
|
||||
new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava());
|
||||
var res = mc.createMigration();
|
||||
try {
|
||||
validateUp(res);
|
||||
validateDown(res);
|
||||
|
||||
@@ -3,10 +3,11 @@ package jef.model.migration.creator;
|
||||
import jef.DbSet;
|
||||
import jef.model.DbContext;
|
||||
import jef.model.ModelBuilder;
|
||||
import jef.model.SqlTypeMapper;
|
||||
import jef.model.annotations.Clazz;
|
||||
import jef.model.annotations.Id;
|
||||
import jef.model.migration.operation.RenameFieldOperation;
|
||||
import jef.platform.base.SqlTypeMapper;
|
||||
import jef.platform.nul.NullPlatform;
|
||||
import jef.serializable.SerializableObject;
|
||||
import lombok.Getter;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -22,8 +23,10 @@ public class MigrationCreatorRenameFieldTest extends MigrationCreatorTestBase {
|
||||
var to = ModelBuilder.from(Ctx.class);
|
||||
var ent = to.entity(TestClass.class);
|
||||
ent.field("d", double.class.getName()).name("d2");
|
||||
var mc = new MigrationCreator();
|
||||
var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper
|
||||
var platform = new NullPlatform();
|
||||
var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test",
|
||||
new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava());
|
||||
var res = mc.createMigration();
|
||||
try {
|
||||
validateUp(res);
|
||||
validateDown(res);
|
||||
|
||||
@@ -2,7 +2,6 @@ package jef.model.migration.creator;
|
||||
|
||||
import jef.model.DbContext;
|
||||
import jef.model.ModelBuilder;
|
||||
import jef.model.ModelBuilderCloneTest;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
@@ -48,7 +47,6 @@ public class MigrationCreatorTestBase {
|
||||
compile(packageName, className, snapshotJava);
|
||||
var clazz = (Class<? extends DbContext>) loadClass(packageName, className);
|
||||
var mb = ModelBuilder.from(clazz);
|
||||
ModelBuilderCloneTest.debugHelper(from, mb);
|
||||
assertEquals(from, mb);
|
||||
} catch (AssertionError | RuntimeException e) {
|
||||
throw e;
|
||||
@@ -88,7 +86,7 @@ public class MigrationCreatorTestBase {
|
||||
var javac = new File(javaHome, "bin/javac" + (isWindows ? ".exe" : ""));
|
||||
var process = new ProcessBuilder()
|
||||
.command(javac.getAbsolutePath(),
|
||||
"-cp", "target/classes" + File.pathSeparator + "target/test-classes",
|
||||
"-cp", "target/classes" + File.pathSeparator + "target/test-classes" + File.pathSeparator + "../core/target/classes",
|
||||
"-encoding", "UTF8",
|
||||
"-g", //debug symbols
|
||||
"-d", destdir.getPath(), //target
|
||||
|
||||
Reference in New Issue
Block a user