Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.59 KB | None | 0 0
  1.         private String BuildQuery(String table, Table conditions, Func<String, String> func)
  2.         {
  3.             var joinsCache = new Dictionary<String, String>();
  4.             var alias = GetNewAlias(table);
  5.             if (conditions?.RowCount > 0)
  6.             {
  7.                 foreach (var row in conditions.Rows)
  8.                 {
  9.                     var columnPath = row["column"];
  10.                     var comparison = row["comparison"];
  11.                     var value = row["value"];
  12.                     BaseSteps.ExpandEscapeSequence(ref value);
  13.                     String join;
  14.                     row.TryGetValue("join", out join);
  15.                     if (String.IsNullOrEmpty(join))
  16.                         join = "INNER";
  17.                     join = join.ToUpper();
  18.  
  19.                     String funcName;
  20.                     IList<String> funcArgs;
  21.                     if (ParseFunction(columnPath, out funcName, out funcArgs))
  22.                     {
  23.                         var selectColumnBuilder = new StringBuilder();
  24.                         selectColumnBuilder.Append($"{funcName}(");
  25.                         if (funcArgs.Any())
  26.                         {
  27.                             foreach (var funcArg in funcArgs)
  28.                             {
  29.                                 var columnName = funcArg;
  30.                                 var columnType = GetColumnType(table, columnName);
  31.                                 columnName = String.IsNullOrEmpty(columnType) && !columnName.Contains(".")
  32.                                     ? columnName
  33.                                     : processColumn(columnName, alias, join, joinsCache);
  34.                                 selectColumnBuilder.Append($"{columnName}, ");
  35.                             }
  36.                             selectColumnBuilder.Remove(selectColumnBuilder.Length - 2, 2);
  37.                         }
  38.                         selectColumnBuilder.Append(")");
  39.                         columnPath = selectColumnBuilder.ToString();
  40.                     }
  41.                     else
  42.                         columnPath = processColumn(columnPath, alias, join, joinsCache);
  43.  
  44.                     columnPath = GetColumnCasted(columnPath, comparison, value);
  45.                     where.Append(where.Length == 0
  46.                         ? "WHERE "
  47.                         : "  AND ");
  48.                     if (comparison == "=" && value.ToUpper() == "NULL")
  49.                         comparison = "IS";
  50.                     where.Append($"{columnPath} {comparison} {value}");
  51.                     where.AppendLine();
  52.                 }
  53.             }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement