create primary keys on directly on table creation instead of a seperate operation

This commit is contained in:
wea_ondara
2022-11-27 07:58:29 +01:00
parent 1f90bc551b
commit 3e581a9e4a
9 changed files with 56 additions and 54 deletions

View File

@@ -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;
}

View File

@@ -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);
}
}
}

View File

@@ -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"));
}

View File

@@ -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));