Deveel.Data.DeleteTests.CreateTestTable C# (CSharp) Method

CreateTestTable() private method

private CreateTestTable ( string testName, IQuery query ) : void
testName string
query IQuery
return void
        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");

            }
        }