Exemplo n.º 1
0
        /// <inheritdoc />
        protected override void StartupCore(MethodCallExpression node)
        {
            writer.Select();
            writer.Write("CASE WHEN ");

            writer.ReverseCondition(() =>
            {
                writer.Exists();
                writer.OpenBrace();

                if (node.Arguments.Count == 1)
                {
                    visitor.Visit(node.Arguments[0]);
                }
                else
                {
                    visitor.VisitCondition(node);
                }

                writer.CloseBrace();
            });

            writer.Write(" THEN ");

            writer.BooleanTrue();

            writer.Write(" ELSE ");

            writer.BooleanFalse();

            writer.Write(" END");
        }
Exemplo n.º 2
0
        /// <inheritdoc />
        protected override void StartupCore(MethodCallExpression node)
        {
            writer.Select();
            writer.Write(FnName);
            writer.OpenBrace();

            Workflow(() =>
            {
                var mainExp = node.Arguments[0];

                var tableInfo = MakeTableInfo(mainExp.Type);

                var alias = GetEntryAlias(tableInfo.TableType, string.Empty);

                if (tableInfo.Keys.Count == 1)
                {
                    string key = tableInfo.Keys.First();

                    foreach (var kv in tableInfo.ReadOrWrites)
                    {
                        if (kv.Key == key)
                        {
                            writer.NameDot(alias, kv.Value);

                            break;
                        }
                    }
                }
                else
                {
                    writer.Write("1");
                }

                writer.CloseBrace();
            }, () =>
            {
                if (node.Arguments.Count == 1)
                {
                    visitor.Visit(node.Arguments[0]);
                }
                else
                {
                    visitor.VisitCondition(node);
                }
            });
        }