public object Translate(TranslationContext context, ASTNode node) { var result = new Model.CallExpression(); result.Identifier = "IsNull"; // TODO: This is T-SQL dialect specific... result.Expressions.Add(context.TranslateNode(node.Children[0])); result.Expressions.Add(context.TranslateNode(node.Children[1])); return result; }
public object Translate(TranslationContext context, ASTNode node) { // TODO: This is a T-SQL specific call var result = new Model.CallExpression ( "Convert", new Model.Expression[] { new Model.IdentifierExpression("dateTime"), new Model.CallExpression ( "Floor", new Model.Expression[] { new Model.CallExpression ( "Convert", new Model.Expression[] { new Model.IdentifierExpression("float"), SQLTranslationUtilities.EnsureExpression(context.TranslateNode(node.Children[0])) } ) } ) } ); return result; }
public object Translate(TranslationContext context, ASTNode node) { var result = new Model.CallExpression(); result.Identifier = "Coalesce"; foreach (var child in node.Children) { result.Expressions.Add(context.TranslateNode(child)); } return result; }
// Children // date // granularity // numberOfPeriods public object Translate(TranslationContext context, ASTNode node) { var result = new Model.CallExpression("DateAdd", new Model.Expression[] { }); // TODO: This is a T-SQL specific translation var granularity = node.Children[1]; if (granularity.NodeType == "urn:hl7-org:v3:knowledgeartifact:r1:Literal") // TODO: Better story for this type of thing.... { result.Expressions.Add(new Model.IdentifierExpression(granularity.GetAttribute<string>("value"))); } else { throw new NotSupportedException("Date granularity argument to a DateAdd expression must be a literal because CREF does not support granularity as an argument, only as an attribute of the target DateAdd expression."); } var numberOfPeriods = node.Children[2]; result.Expressions.Add(context.TranslateNode(numberOfPeriods)); var date = node.Children[0]; result.Expressions.Add(context.TranslateNode(date)); return result; }
public object Translate(TranslationContext context, ASTNode node) { // TODO: This is a T-SQL specific call var result = new Model.CallExpression ( "Convert", new Model.Expression[] { new Model.IdentifierExpression("dateTime"), new Model.CallExpression ( "Floor", new Model.Expression[] { new Model.CallExpression ( "Convert", new Model.Expression[] { new Model.IdentifierExpression("float"), new Model.CallExpression("GetDate", new Model.Expression[] { }) } ) } ) } ); return result; }