create primary keys on directly on table creation instead of a seperate operation
This commit is contained in:
@@ -24,8 +24,8 @@ import java.util.List;
|
||||
public class MigrationBuilder {
|
||||
private final List<MigrationOperation.Builder<?>> operations = new ArrayList<>();
|
||||
|
||||
public AddTableOperation.Builder addTable(String table, List<AddFieldOperation.Builder> fields) {
|
||||
var op = new AddTableOperation.Builder(table, fields);
|
||||
public AddTableOperation.Builder addTable(String table, List<AddFieldOperation.Builder> fields, AddPrimaryKeyOperation.Builder primaryKey) {
|
||||
var op = new AddTableOperation.Builder(table, fields, primaryKey);
|
||||
operations.add(op);
|
||||
return op;
|
||||
}
|
||||
|
||||
@@ -14,20 +14,23 @@ import java.util.List;
|
||||
public class AddTableOperation implements MigrationOperation {
|
||||
private final String table;
|
||||
private final List<AddFieldOperation.Builder> fields;
|
||||
private final AddPrimaryKeyOperation.Builder primaryKey;
|
||||
|
||||
@EqualsAndHashCode
|
||||
@ToString
|
||||
public static class Builder implements MigrationOperation.Builder<AddTableOperation> {
|
||||
private final String table;
|
||||
private final List<AddFieldOperation.Builder> fields;
|
||||
private final AddPrimaryKeyOperation.Builder primaryKey;
|
||||
|
||||
public Builder(String table, List<AddFieldOperation.Builder> fields) {
|
||||
public Builder(String table, List<AddFieldOperation.Builder> fields, AddPrimaryKeyOperation.Builder primaryKey) {
|
||||
this.table = table;
|
||||
this.fields = fields;
|
||||
this.primaryKey = primaryKey;
|
||||
}
|
||||
|
||||
public AddTableOperation build() {
|
||||
return new AddTableOperation(table, fields);
|
||||
return new AddTableOperation(table, fields, primaryKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ public class M00010101000000_MigrationsLogTableMigration implements Migration {
|
||||
migrationBuilder.addTable(tableName, List.of(
|
||||
new AddFieldOperation.Builder(tableName, "migration").notNull(true).sqlType(typeMapper.map(String.class.getName()).orElseThrow()),
|
||||
new AddFieldOperation.Builder(tableName, "version").notNull(true).sqlType(typeMapper.map(String.class.getName()).orElseThrow())
|
||||
));
|
||||
), null);
|
||||
migrationBuilder.addUniqueKey("U_" + tableName + "_migration", tableName, List.of("migration"));
|
||||
}
|
||||
|
||||
|
||||
@@ -179,7 +179,7 @@ class MigrationApplierTest {
|
||||
var operationBuilder = new MigrationOperation.Builder[]{null};
|
||||
var operation = new MigrationOperation[]{null};
|
||||
doAnswer(invok -> {
|
||||
operationBuilder[0] = ((MigrationBuilder) invok.getArguments()[0]).addTable("test", List.of());
|
||||
operationBuilder[0] = ((MigrationBuilder) invok.getArguments()[0]).addTable("test", List.of(), null);
|
||||
operation[0] = operationBuilder[0].build();
|
||||
return null;
|
||||
}).when(migration).up(any(MigrationBuilder.class));
|
||||
@@ -207,7 +207,7 @@ class MigrationApplierTest {
|
||||
var operationBuilder = new MigrationOperation.Builder[]{null};
|
||||
var operation = new MigrationOperation[]{null};
|
||||
doAnswer(invok -> {
|
||||
operationBuilder[0] = ((MigrationBuilder) invok.getArguments()[0]).addTable("test", List.of());
|
||||
operationBuilder[0] = ((MigrationBuilder) invok.getArguments()[0]).addTable("test", List.of(), null);
|
||||
operation[0] = operationBuilder[0].build();
|
||||
return null;
|
||||
}).when(migration).up(any(MigrationBuilder.class));
|
||||
@@ -238,7 +238,7 @@ class MigrationApplierTest {
|
||||
var operationBuilder = new MigrationOperation.Builder[]{null};
|
||||
var operation = new MigrationOperation[]{null};
|
||||
doAnswer(invok -> {
|
||||
operationBuilder[0] = ((MigrationBuilder) invok.getArguments()[0]).addTable("test", List.of());
|
||||
operationBuilder[0] = ((MigrationBuilder) invok.getArguments()[0]).addTable("test", List.of(), null);
|
||||
operation[0] = operationBuilder[0].build();
|
||||
return null;
|
||||
}).when(migration).up(any(MigrationBuilder.class));
|
||||
|
||||
Reference in New Issue
Block a user