Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private String BuildQuery(String table, Table conditions, Func<String, String> func)
- {
- var joinsCache = new Dictionary<String, String>();
- var alias = GetNewAlias(table);
- if (conditions?.RowCount > 0)
- {
- foreach (var row in conditions.Rows)
- {
- var columnPath = row["column"];
- var comparison = row["comparison"];
- var value = row["value"];
- BaseSteps.ExpandEscapeSequence(ref value);
- String join;
- row.TryGetValue("join", out join);
- if (String.IsNullOrEmpty(join))
- join = "INNER";
- join = join.ToUpper();
- String funcName;
- IList<String> funcArgs;
- if (ParseFunction(columnPath, out funcName, out funcArgs))
- {
- var selectColumnBuilder = new StringBuilder();
- selectColumnBuilder.Append($"{funcName}(");
- if (funcArgs.Any())
- {
- foreach (var funcArg in funcArgs)
- {
- var columnName = funcArg;
- var columnType = GetColumnType(table, columnName);
- columnName = String.IsNullOrEmpty(columnType) && !columnName.Contains(".")
- ? columnName
- : processColumn(columnName, alias, join, joinsCache);
- selectColumnBuilder.Append($"{columnName}, ");
- }
- selectColumnBuilder.Remove(selectColumnBuilder.Length - 2, 2);
- }
- selectColumnBuilder.Append(")");
- columnPath = selectColumnBuilder.ToString();
- }
- else
- columnPath = processColumn(columnPath, alias, join, joinsCache);
- columnPath = GetColumnCasted(columnPath, comparison, value);
- where.Append(where.Length == 0
- ? "WHERE "
- : " AND ");
- if (comparison == "=" && value.ToUpper() == "NULL")
- comparison = "IS";
- where.Append($"{columnPath} {comparison} {value}");
- where.AppendLine();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement