private HqlResult ConvertToHql(string expression, string tableConfigId = null, Action <JsonLogic2HqlConverterContext> prepareContextAction = null) { // Parse json into hierarchical structure var rule = JObject.Parse(expression); // Create an evaluator with default operators. var evaluator = new JsonLogic2HqlConverter(); var context = new JsonLogic2HqlConverterContext(); if (!string.IsNullOrWhiteSpace(tableConfigId)) { WithUnitOfWork(() => { var tableConfig = _tableConfigStore.GetTableConfiguration(tableConfigId); DataTableHelper.FillVariablesResolvers(tableConfig.Columns, context); DataTableHelper.FillContextMetadata(tableConfig.Columns, context); }); } prepareContextAction?.Invoke(context); // Apply the rule to the data. var result = evaluator.Convert(rule, context); return(new HqlResult { Hql = result, Context = context }); }
public void NestedColumnResolver_Convert() { var expression = _nestedColumnResolver_expression; // Parse json into hierarchical structure var rule = JObject.Parse(expression); // Create an evaluator with default operators. var evaluator = new JsonLogic2HqlConverter(); var context = new JsonLogic2HqlConverterContext(); context.VariablesResolvers.Add("User_UserName", "User.UserName"); // Apply the rule to the data. var hql = evaluator.Convert(rule, context); // fill parameters using context Assert.Equal(@"(ent.User.UserName = :par1)", hql); Assert.Single(context.FilterParameters); Assert.Equal("admin", context.FilterParameters.FirstOrDefault().Value); }