Exemple #1
0
        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>());
        }
Exemple #2
0
        /// <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());
        }
Exemple #3
0
        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());
        }
Exemple #4
0
        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();
            });
        }
Exemple #5
0
        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>());
        }