private void ProcessQuery(StringBuilder sb, QuerySegment segment, QueryBuildInfo buildInfo, IDbLayer dbLayer) { buildInfo = dbLayer.DataManipulate().ProcessQuery(buildInfo, segment.Query.Structure); sb.Append(" ( "); sb.Append(buildInfo.ExecInfo.Sql); sb.Append(" ) "); }
static Dictionary <string, QuerySegment> ParseQueryStringVariables(Uri templateUri) { string queries = templateUri.Query; string[] pairs = queries.Split('&'); var nc = new Dictionary <string, QuerySegment>(); foreach (string value in pairs) { string unescapedString = Uri.UnescapeDataString(value); if (unescapedString.Length == 0) { continue; } int variableStart = unescapedString[0] == '?' ? 1 : 0; int equalSignPosition = unescapedString.IndexOf('='); if (equalSignPosition != -1) { string val = unescapedString.Substring(equalSignPosition + 1); string valAsVariable = GetVariableName(val); var segment = new QuerySegment { Key = unescapedString.Substring(variableStart, equalSignPosition - variableStart), Value = valAsVariable ?? val, Type = valAsVariable == null ? SegmentType.Literal : SegmentType.Variable }; nc[segment.Key] = segment; } } return(nc); }
static Dictionary<string, QuerySegment> ParseQueryStringVariables(Uri templateUri) { string queries = templateUri.Query; string[] pairs = queries.Split('&'); var nc = new Dictionary<string, QuerySegment>(StringComparer.OrdinalIgnoreCase); foreach (string value in pairs) { string unescapedString = Uri.UnescapeDataString(value.Replace('+', ' ')); if (unescapedString.Length == 0) continue; int variableStart = unescapedString[0] == '?' ? 1 : 0; int equalSignPosition = unescapedString.IndexOf('='); if (equalSignPosition != -1) { string val = unescapedString.Substring(equalSignPosition + 1); string valAsVariable = GetVariableName(val); var segment = new QuerySegment { Key = unescapedString.Substring(variableStart, equalSignPosition - variableStart), Value = valAsVariable ?? val, Type = valAsVariable == null ? SegmentType.Literal : SegmentType.Variable }; nc[segment.Key] = segment; } } return nc; }
private bool TryGetSegment(ModelBindingContext bindingContext, out QuerySegment querySegment) { var skipValue = bindingContext.ValueProvider.GetValue("skip"); if (skipValue.Length > 1) { throw new ArgumentOutOfRangeException(nameof(skipValue)); } var takeValue = bindingContext.ValueProvider.GetValue("take"); if (takeValue.Length > 1) { throw new ArgumentOutOfRangeException(nameof(takeValue)); } if (skipValue.Length > 0 || takeValue.Length > 0) { querySegment = new QuerySegment { StartIndex = skipValue.Length > 0 ? (int)Convert.ChangeType(skipValue.FirstValue, TypeCode.Int32) : 0, Count = takeValue.Length > 0 ? (int?)Convert.ChangeType(takeValue.FirstValue, TypeCode.Int32) : null }; return(true); } querySegment = null; return(false); }
public static SystemUri Define ( SchemeSegment scheme = null, HostSegment host = null, PathSegment path = null, QuerySegment query = null ) => new SystemUri(scheme, host, path, query);
private static QuerySegment[] ParseQueries(string path) { if (string.IsNullOrEmpty(path)) { return(new QuerySegment[0]); } var split = path.Split('&'); var result = new QuerySegment[split.Length]; for (var i = 0; i < split.Length; i++) { result[i] = new QuerySegment(split[i]); } return(result); }
public bool IsEquivalentTo(UriTemplate other) { if (other == null) { return(false); } if (_segments.Count != other._segments.Count) { return(false); } if (_queryStringVariables.Count != other._queryStringVariables.Count) { return(false); } for (int i = 0; i < _segments.Count; i++) { UrlSegment thisSegment = _segments[i]; UrlSegment otherSegment = other._segments[i]; if (thisSegment.Type != otherSegment.Type) { return(false); } if (thisSegment.Type == SegmentType.Literal && thisSegment.Text != otherSegment.Text) { return(false); } } foreach (var thisSegment in _queryStringVariables) { if (!other._queryStringVariables.ContainsKey(thisSegment.Key)) { return(false); } QuerySegment otherSegment = other._queryStringVariables[thisSegment.Key]; if (thisSegment.Value.Type != otherSegment.Type) { return(false); } if (thisSegment.Value.Type == SegmentType.Literal && thisSegment.Value.Value != otherSegment.Value) { return(false); } } return(true); }
private bool TryGetQuery(ModelBindingContext bindingContext, out Query <TQueryable> query) { QueryCriteria <TQueryable> criteria = null; if (TryGetCriteria(bindingContext, out var queryCriteria)) { criteria = queryCriteria; } List <QueryOrder> orders = null; if (TryGetOrders(bindingContext, out var queryOrders)) { orders = queryOrders; } QuerySegment segment = null; if (TryGetSegment(bindingContext, out var querySegment)) { segment = querySegment; } if (criteria != null || orders != null || segment != null) { query = new Query <TQueryable> { Criteria = criteria, Orders = orders, Segment = segment }; return(true); } query = null; return(false); }
public static IEnumerable <QuerySegment> ParseQueryStringSegments(string query) { var kvPairs = query.Split('&'); foreach (var kvPair in kvPairs) { var unescapedString = Uri.UnescapeDataString(kvPair.Replace('+', ' ')); if (unescapedString.Length == 0) { continue; } var variableStart = unescapedString[0] == '?' ? 1 : 0; var equalSignPosition = unescapedString.IndexOf('='); if (equalSignPosition != -1) { var key = unescapedString.Substring(variableStart, equalSignPosition - variableStart); var val = unescapedString.Substring(equalSignPosition + 1); var valAsVariable = GetVariableName(val); var segment = new QuerySegment { Key = key, Value = valAsVariable ?? val, RawValue = val, Type = valAsVariable == null ? SegmentType.Literal : SegmentType.Variable }; yield return(segment); } else { yield return(new QuerySegment { Key = unescapedString, Value = null, Type = SegmentType.Literal }); } } }
static Dictionary <string, QuerySegment> ParseQueries(Uri templateUri) { string queries = templateUri.Query; string[] pairs = queries.Split('&'); var nc = new Dictionary <string, QuerySegment>(); foreach (string value in pairs) { // the UnescapeDataString method does not convert plus characters into spaces // because this behavior is not standard across all URI schemes (apparently!). // http://msdn.microsoft.com/en-us/library/system.uri.unescapedatastring.aspx var unescapedString = value.Replace('+', ' '); unescapedString = Uri.UnescapeDataString(unescapedString); if (unescapedString.Length == 0) { continue; } int variableStart = unescapedString[0] == '?' ? 1 : 0; int equalSignPosition = unescapedString.IndexOf('='); if (equalSignPosition != -1) { string val = unescapedString.Substring(equalSignPosition + 1); string valAsVariable = GetVariableName(val); var segment = new QuerySegment { Key = unescapedString.Substring(variableStart, equalSignPosition - variableStart), Value = valAsVariable ?? val, Type = valAsVariable == null ? SegmentType.Literal : SegmentType.Variable }; nc[segment.Key] = segment; } } return(nc); }
static bool QuerySegmentValueIsDifferent(Dictionary <string, QuerySegment> requestUriQuerySegments, QuerySegment templateQuerySegment) { return(requestUriQuerySegments[templateQuerySegment.Key].Value != templateQuerySegment.Value); }
protected T BaseQuery(ISelectionQuery query, string alias) { var segment = new QuerySegment(query, alias); return(AddSegment(segment)); }
static Dictionary<string, QuerySegment> ParseQueries(Uri templateUri) { string queries = templateUri.Query; string[] pairs = queries.Split('&'); var nc = new Dictionary<string, QuerySegment>(); foreach (string value in pairs) { // the UnescapeDataString method does not convert plus characters into spaces // because this behavior is not standard across all URI schemes (apparently!). // http://msdn.microsoft.com/en-us/library/system.uri.unescapedatastring.aspx var unescapedString = value.Replace('+', ' '); unescapedString = Uri.UnescapeDataString(unescapedString); if (unescapedString.Length == 0) continue; int variableStart = unescapedString[0] == '?' ? 1 : 0; int equalSignPosition = unescapedString.IndexOf('='); if (equalSignPosition != -1) { string val = unescapedString.Substring(equalSignPosition + 1); string valAsVariable = GetVariableName(val); var segment = new QuerySegment { Key = unescapedString.Substring(variableStart, equalSignPosition - variableStart), Value = valAsVariable ?? val, Type = valAsVariable == null ? SegmentType.Literal : SegmentType.Variable }; nc[segment.Key] = segment; } } return nc; }