public void Initialize() { expression = new UpdateDataExpression() { TableName = "ExampleTable", Set = new List<KeyValuePair<string, object>> { new KeyValuePair<string, object>("Column", "value") }, IsAllRows = false }; }
public abstract string Generate(UpdateDataExpression expression);
public override string Generate(UpdateDataExpression expression) { throw new NotImplementedException(); }
public override string Generate(UpdateDataExpression expression) { return string.Format("UPDATE {0}.{1}", Quoter.QuoteSchemaName(expression.SchemaName), base.Generate(expression)); }
public void Truncate(UpdateDataExpression expression) { expression.TableName = Truncate(expression.TableName); }
public override string Generate(UpdateDataExpression expression) { List<string> updateItems = new List<string>(); List<string> whereClauses = new List<string>(); foreach (var item in expression.Set) { updateItems.Add(string.Format("{0} = {1}", Quoter.QuoteColumnName(item.Key), Quoter.QuoteValue(item.Value))); } if(expression.IsAllRows) { whereClauses.Add("1 = 1"); } else { foreach (var item in expression.Where) { whereClauses.Add(string.Format("{0} {1} {2}", Quoter.QuoteColumnName(item.Key), item.Value == null ? "IS" : "=", Quoter.QuoteValue(item.Value))); } } return String.Format(UpdateData, Quoter.QuoteTableName(expression.TableName), String.Join(", ", updateItems.ToArray()), String.Join(" AND ", whereClauses.ToArray())); }
public static UpdateDataExpression GetUpdateDataExpression() { var expression = new UpdateDataExpression(); expression.TableName = TestTableName1; expression.Set = new List<KeyValuePair<string, object>> { new KeyValuePair<string, object>("Name", "Just'in"), new KeyValuePair<string, object>("Age", 25) }; expression.Where = new List<KeyValuePair<string, object>> { new KeyValuePair<string, object>("Id", 9), new KeyValuePair<string, object>("Homepage", null) }; return expression; }
public void IfMigrationHasAnInvalidExpressionDuringUpActionShouldThrowAnExceptionAndAnnounceTheError() { var invalidMigration = new Mock<IMigration>(); var invalidExpression = new UpdateDataExpression {TableName = "Test"}; invalidMigration.Setup(m => m.GetUpExpressions(It.IsAny<IMigrationContext>())).Callback((IMigrationContext mc) => mc.Expressions.Add(invalidExpression)); Assert.Throws<InvalidMigrationException>(() => _runner.Up(invalidMigration.Object)); _announcer.Verify(a => a.Error(It.Is<string>(s => s.Contains("UpdateDataExpression: Update statement is missing a condition. Specify one by calling .Where() or target all rows by calling .AllRows().")))); }
public static UpdateDataExpression GetUpdateDataExpressionWithAllRows() { var expression = new UpdateDataExpression(); expression.TableName = TestTableName1; expression.Set.AddRange(new[] { new ExplicitDataDefinition(new DataValue("Name", "Just'in"), new DataValue("Age", 25)) }); expression.IsAllRows = true; return expression; }
public static UpdateDataExpression GetUpdateDataExpression() { var expression = new UpdateDataExpression(); expression.TableName = TestTableName1; expression.Set.AddRange(new [] { new ExplicitDataDefinition(new DataValue("Name", "Just'in"), new DataValue("Age", 25)) } ); expression.Where.AddRange(new [] { new ExplicitDataDefinition(new DataValue("Id", 9), new DataValue("Homepage", null)) } ); return expression; }
public IUpdateSetOrInSchemaSyntax Table(string tableName) { var expression = new UpdateDataExpression { TableName = tableName }; _context.Expressions.Add(expression); return new UpdateDataExpressionBuilder(expression, _context); }
public override string Generate(UpdateDataExpression expression) { return string.Format("UPDATE {0}", base.Generate(expression)); }
public void CanUpdateTable() { CanInsertAndReadDataFromTestTable(); var expression = new UpdateDataExpression { TableName = "Foo" , Set = new List<KeyValuePair<string, object>> { new KeyValuePair<string, object>("Id", 2) } , Where = new List<KeyValuePair<string, object>> { new KeyValuePair<string, object>("Id", 1) } }; _processor.Process(expression); var table = _processor.ReadTableData(string.Empty, "Foo"); 1.ShouldBe(table.Tables[0].Rows.Count); 2.ShouldBe(table.Tables[0].Rows[0]["Id"]); }
public override string Generate(UpdateDataExpression expression) { string setClause = EvaluateSet(expression.Set); string whereClause = expression.IsAllRows ? "1 = 1" : EvaluateWhere(expression.Where); return String.Format(UpdateData, Quoter.QuoteTableName(expression.TableName), setClause, whereClause, CommandDelimiter); }
public void Truncate(UpdateDataExpression expression) { expression.TableName = Truncate(expression.TableName); List<KeyValuePair<string, object>> newSet = new List<KeyValuePair<string, object>>(); foreach (var data in expression.Set) { newSet.Add(new KeyValuePair<string, object>(Truncate(data.Key), data.Value)); } expression.Set.Clear(); expression.Set.AddRange(newSet); if (!expression.IsAllRows) { List<KeyValuePair<string, object>> newWhere = new List<KeyValuePair<string, object>>(); foreach (var data in expression.Where) { newWhere.Add(new KeyValuePair<string, object>(Truncate(data.Key), data.Value)); } expression.Where.Clear(); expression.Where.AddRange(newWhere); } }
public void CanUpdateData() { var expression = new UpdateDataExpression(); expression.TableName = "Table1"; expression.Set = new List<KeyValuePair<string, object>> { new KeyValuePair<string, object>("Name", "Just'in"), new KeyValuePair<string, object>("Age", 25) }; expression.Where = new List<KeyValuePair<string, object>> { new KeyValuePair<string, object>("Id", 9), new KeyValuePair<string, object>("Homepage", null) }; var sql = generator.Generate(expression); sql.ShouldBe("UPDATE [Table1] SET [Name] = 'Just''in', [Age] = 25 WHERE [Id] = 9 AND [Homepage] IS NULL"); }
public override string Generate(UpdateDataExpression expression) { var result = new StringBuilder(); var set = String.Empty; var i = 0; foreach (var item in expression.Set) { if (i != 0) { set += ", "; } set += String.Format("[{0}] = {1}", item.Key, Constant.Format(item.Value)); i++; } var where = String.Empty; i = 0; foreach (var item in expression.Where) { if (i != 0) { where += " AND "; } where += String.Format("[{0}] {1} {2}", item.Key, item.Value == null ? "IS" : "=", Constant.Format(item.Value)); i++; } result.Append(String.Format("UPDATE [{0}] SET {1} WHERE {2};", expression.TableName, set, where)); return result.ToString(); }
public void CanUpdateBinaryData() { var expression = new UpdateDataExpression { TableName = "TestTable1" }; var set = new { Name = "Just'in", Value = Encoding.ASCII.GetBytes("Just'in") }; var where = new { Id = 1 }; expression.Set.Add(new ReflectedDataDefinition(set)); expression.Where.Add(new ReflectedDataDefinition(where)); var sql = generator.Generate(expression); string expected = @"UPDATE `TestTable1` SET `Name` = 'Just''in', `Value` = UNHEX('4A75737427696E') WHERE `Id` = 1;"; sql.ShouldBe(expected); }
public void IfMigrationHasTwoInvalidExpressionsShouldAnnounceBothErrors() { var invalidMigration = new Mock<IMigration>(); var invalidExpression = new UpdateDataExpression { TableName = "Test" }; var secondInvalidExpression = new CreateColumnExpression(); invalidMigration.Setup(m => m.GetUpExpressions(It.IsAny<IMigrationContext>())) .Callback((IMigrationContext mc) => { mc.Expressions.Add(invalidExpression); mc.Expressions.Add(secondInvalidExpression); }); Assert.Throws<InvalidMigrationException>(() => _runner.Up(invalidMigration.Object)); _announcer.Verify(a => a.Error(It.Is<string>(s => s.Contains("UpdateDataExpression: Update statement is missing a condition. Specify one by calling .Where() or target all rows by calling .AllRows().")))); _announcer.Verify(a => a.Error(It.Is<string>(s => s.Contains("CreateColumnExpression: The table's name cannot be null or an empty string. The column's name cannot be null or an empty string. The column does not have a type defined.")))); }
public UpdateDataExpressionBuilder(UpdateDataExpression expression, IMigrationContext context) { _context = context; _expression = expression; }
public void Process(UpdateDataExpression expression) { Process(Generator.Generate(expression)); }
public static UpdateDataExpression GetUpdateDataExpressionWithAllRows() { var expression = new UpdateDataExpression(); expression.TableName = TestTableName1; expression.Set = new List<KeyValuePair<string, object>> { new KeyValuePair<string, object>("Name", "Just'in"), new KeyValuePair<string, object>("Age", 25) }; expression.IsAllRows = true; return expression; }
public override string Generate(UpdateDataExpression expression) { truncator.Truncate(expression); return base.Generate(expression); }
public IUpdateColumnFromSyntax Column(string columnName) { var expression = new UpdateDataExpression { ColumnName = columnName }; _context.Expressions.Add(expression); return new UpdateDataExpressionBuilder(expression, _context); }