using System.Linq.Expressions; using Connected.Expressions; using Connected.Expressions.Languages; using Connected.Expressions.Translation; using Connected.Expressions.Translation.Rewriters; namespace Connected.ServiceModel.Client.Data; internal class CqlLinguist : Linguist { public CqlLinguist(ExpressionCompilationContext context, CqlLanguage language, Translator translator) : base(context, language, translator) { } public override Expression Translate(Expression expression) { /* * fix up any order-by's */ expression = OrderByRewriter.Rewrite(Language, expression); expression = base.Translate(expression); /* * convert skip/take info into RowNumber pattern */ expression = SkipToRowNumberRewriter.Rewrite(Language, expression); /* * fix up any order-by's we may have changed */ expression = OrderByRewriter.Rewrite(Language, expression); return expression; } public override string Format(Expression expression) { return CqlFormatter.Format(Context, expression, Language); } }