/// <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"); }
/// <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); } }); }