private void CreateTestTable(string testName, IQuery query)
{
var tableName1 = ObjectName.Parse("APP.test_table");
query.Access().CreateTable(table => {
table
.Named(tableName1)
.WithColumn(column => column
.Named("id")
.HavingType(PrimitiveTypes.Integer())
.WithDefault(SqlExpression.FunctionCall("UNIQUEKEY",
new SqlExpression[] {SqlExpression.Constant(tableName1.FullName)})))
.WithColumn("first_name", PrimitiveTypes.String())
.WithColumn("last_name", PrimitiveTypes.String())
.WithColumn("birth_date", PrimitiveTypes.DateTime())
.WithColumn("active", PrimitiveTypes.Boolean());
if (testName.EndsWith("WithLob"))
table.WithColumn("bio", PrimitiveTypes.Clob());
});
query.Access().AddPrimaryKey(tableName1, "id", "PK_TEST_TABLE");
if (testName.EndsWith("ConstraintCheck") ||
testName.EndsWith("Violation")) {
var tableName2 = ObjectName.Parse("APP.test_table2");
query.Access().CreateTable(table => {
table
.Named(tableName2)
.WithColumn(column => column
.Named("id")
.HavingType(PrimitiveTypes.Integer())
.WithDefault(SqlExpression.FunctionCall("UNIQUEKEY",
new SqlExpression[] {SqlExpression.Constant(tableName2.FullName)})));
if (testName.StartsWith("SetDefault")) {
table.WithColumn(column => column
.Named("person_id")
.HavingType(PrimitiveTypes.Integer())
.WithDefault(SqlExpression.Constant(1)));
} else {
table.WithColumn(column => column
.Named("person_id")
.HavingType(PrimitiveTypes.Integer())
.NotNull(testName.EndsWith("Violation")));
}
table.WithColumn("dept_no", PrimitiveTypes.Integer());
});
query.Access().AddPrimaryKey(tableName2, "id", "PK_TEST_TABLE2");
ForeignKeyAction? onDelete = null;
if (testName.StartsWith("SetNullOnDelete")) {
onDelete = ForeignKeyAction.SetNull;
} else if (testName.StartsWith("SetDefaultOnDelete")) {
onDelete = ForeignKeyAction.SetDefault;
} else if (testName.StartsWith("CascadeOnDelete")) {
onDelete = ForeignKeyAction.Cascade;
}
if (onDelete != null)
query.Access()
.AddForeignKey(tableName2, new[] {"person_id"}, tableName1, new[] {"id"}, onDelete.Value,
ForeignKeyAction.NoAction, "FKEY_TEST_TABLE2");
}
}