public void MultipleValuesOr() { // Creating node hierarchy. var node = new Node(); node.Add(new Node("table", "foo")); var where = new Node("where"); var or = new Node("or"); or.Add(new Node("field1", "value1")); or.Add(new Node("field2", "value2")); where.Add(or); node.Add(where); var builder = new SqlDeleteBuilder(node, "'"); // Extracting SQL + params, and asserting correctness. var result = builder.Build(); var sql = result.Get <string>(); Assert.Equal("delete from 'foo' where 'field1' = @0 or 'field2' = @1", sql); var arg1 = result.Children.First(); Assert.Equal("@0", arg1.Name); Assert.Equal("value1", arg1.Get <string>()); var arg2 = result.Children.Skip(1).First(); Assert.Equal("@1", arg2.Name); Assert.Equal("value2", arg2.Get <string>()); }
/// <summary> /// Implementation of your slot. /// </summary> /// <param name="signaler">Signaler used to raise the signal.</param> /// <param name="input">Arguments to your slot.</param> public void Signal(ISignaler signaler, Node input) { var builder = new SqlDeleteBuilder(input, "'"); var result = builder.Build(); input.Value = result.Value; input.Clear(); input.AddRange(result.Children.ToList()); }
public void WrongBooleanGroup_Throws() { // Creating node hierarchy. var node = new Node(); node.Add(new Node("table", "foo")); var where = new Node("where"); var and = new Node("xor"); and.Add(new Node("field1", "value1")); where.Add(and); node.Add(where); var builder = new SqlDeleteBuilder(node, "'"); Assert.Throws <ArgumentException>(() => builder.Build()); }
public void Signal(Node input) { var builder = new SqlDeleteBuilder(input, _signaler); var sqlNode = builder.Build(); // Checking if this is a "build only" invocation. if (builder.IsGenerateOnly) { input.Value = sqlNode.Value; input.Clear(); input.AddRange(sqlNode.Children.ToList()); return; } // Executing SQL, now parametrized. Executor.Execute(sqlNode, _connections, _signaler, (cmd) => { input.Value = cmd.ExecuteNonQuery(); input.Clear(); }); }
public void SingleWhere() { // Creating node hierarchy. var node = new Node(); node.Add(new Node("table", "foo")); var where = new Node("where"); var and = new Node("and"); and.Add(new Node("field1", "value1")); where.Add(and); node.Add(where); var builder = new SqlDeleteBuilder(node, "'"); // Extracting SQL + params, and asserting correctness. var result = builder.Build(); var sql = result.Get <string>(); Assert.Equal("delete from 'foo' where 'field1' = @0", sql); var arg1 = result.Children.First(); Assert.Equal("@0", arg1.Name); Assert.Equal("value1", arg1.Get <string>()); }