public void TestCreateDropColumn(Type runnerType) { var runner = (IQueryRunner)Provider.GetRequiredService(runnerType); ResetDb(runner); var sqlRunner = (SqlQueryRunner)runner; var parser = new SqlSchemaParser(); var column = new Schema.Column() { SqlName = "COL_TEST", BaseType = typeof(int), Nullable = true, OriginalType = typeof(int?), SqlType = new Schema.SqlTypeInfo(), }; var addColumn = parser.ParseAddColumn(DB.Units, column); sqlRunner.ExecuteNonQuery(new List <SqlStatement>() { addColumn }, new List <KeyValuePair <string, object> >()); var dropColumn = parser.ParseDropColumn(DB.Units, column); sqlRunner.ExecuteNonQuery(new List <SqlStatement>() { dropColumn }, new List <KeyValuePair <string, object> >()); }
public void TestCreateDropIndex(Type runnerType) { var runner = (IQueryRunner)Provider.GetRequiredService(runnerType); ResetDb(runner); var sqlRunner = (SqlQueryRunner)runner; var parser = new SqlSchemaParser(); var index = new Schema.Index() { Name = "IX_TEST", Columns = new List <string>() { nameof(TypeValue.IntValue) }, Unique = true, }; var addIndex = parser.ParseAddIndex(DB.TypeValues, index); sqlRunner.ExecuteNonQuery(new List <SqlStatement>() { addIndex }, new List <KeyValuePair <string, object> >()); var dropIndex = parser.ParseDropIndex(DB.TypeValues, index); sqlRunner.ExecuteNonQuery(new List <SqlStatement>() { dropIndex }, new List <KeyValuePair <string, object> >()); }
static List <SqlTable> ParseMetadata(DatabaseContext context) { var parser = new SqlSchemaParser(); var metadata = new List <SqlTable>(); foreach (var fromQuery in context.FromQueries) { var stmt = parser.ParseCreateTable(fromQuery); var columns = stmt.Columns; var foreignKeys = new List <SqlForeignKey>(); foreach (var foreignKey in fromQuery.ForeignKeys) { var foreignKeyStmt = parser.ParseAddForeignKey(fromQuery, foreignKey); foreignKeys.Add(foreignKeyStmt.ForeignKey); } var indices = new List <SqlIndex>(); foreach (var index in fromQuery.Indices) { var indexStmt = parser.ParseAddIndex(fromQuery, index); indices.Add(indexStmt.Index); } metadata.Add(new SqlTable() { TableName = fromQuery.TableName, Columns = columns, ForeignKeys = foreignKeys, Indices = indices, }); } return(metadata); }
public void EnsureMigrationTable(SqlQueryRunner runner) { var parser = new SqlSchemaParser(); var createTable = parser.ParseCreateTable(Context.Migrations); try { runner.ExecuteNonQuery(new List <SqlStatement>() { createTable }, new List <KeyValuePair <string, object> >()); } catch (Exception) { // Ignore exception when the table already exists. } }
public void TestCreateDropForeignKey(Type runnerType) { var runner = (IQueryRunner)Provider.GetRequiredService(runnerType); ResetDb(runner); var sqlRunner = (SqlQueryRunner)runner; var parser = new SqlSchemaParser(); var foreignKey = new Schema.ForeignKey() { ReferenceTableType = typeof(Product), Name = "FK_TEST", Columns = new List <string>() { nameof(Unit.ProductId) }, ReferenceColumns = new List <string>() { nameof(Product.ProductId) } }; // TODO: add default fk in test context, and switch the order here var addForeignKey = parser.ParseAddForeignKey(DB.Units, foreignKey); sqlRunner.ExecuteNonQuery(new List <SqlStatement>() { addForeignKey }, new List <KeyValuePair <string, object> >()); var dropForeignKey = parser.ParseDropForeignKey(DB.Units, foreignKey); sqlRunner.ExecuteNonQuery(new List <SqlStatement>() { dropForeignKey }, new List <KeyValuePair <string, object> >()); }
public void TestDropAndCreateTable(Type runnerType) { var runner = (IQueryRunner)Provider.GetRequiredService(runnerType); ResetDb(runner); var sqlRunner = (SqlQueryRunner)runner; var parser = new SqlSchemaParser(); var dropTable = parser.ParseDropTable(DB.TypeValues); sqlRunner.ExecuteNonQuery(new List <SqlStatement>() { dropTable }, new List <KeyValuePair <string, object> >()); var createTable = parser.ParseDropTable(DB.TypeValues); sqlRunner.ExecuteNonQuery(new List <SqlStatement>() { createTable }, new List <KeyValuePair <string, object> >()); }