public void TestBuilder1() { var query = new ODataQueryBuilder() .Select <Color>() .Filter("name eq blue") .OrderBy("name desc") .Top(1) .Skip(2) .Query; _output.WriteLine(query); }
public void ODataQueryBuilderList_concat_is_null_or_empty_value_agr2_success(string value) { var odataQueryBuilderOptions = new ODataQueryBuilderOptions { SuppressExceptionOfNullOrEmptyFunctionArgs = true }; var odataQueryBuilder = new ODataQueryBuilder <ODataInfoContainer>( _commonFixture.BaseUri, odataQueryBuilderOptions); var uri = odataQueryBuilder .For <ODataTypeEntity>(s => s.ODataType) .ByList() .Filter((s, f) => f.Concat(s.TypeCode, value) == "typeCodeTest;") .ToUri(); uri.OriginalString.Should().Be("http://mock/odata/ODataType?$filter='typeCodeTest;'"); }
/// <summary> /// Function to request Metrics from either Azure Monitor or CosmosDB Resource Provider. /// The result is returned as JSON. /// </summary> /// <param name="resourceUri">Resource of which metric should be consumed</param> /// <param name="oDataQueryBuilderDelegate">Delegate to an inline lambda function to build a simple oDataQuery with a Builder class.</param> /// <param name="insightsQueryBuilderDelegate">Delegate to an inline lambda function to create the query parameters for an Azure Monitor Query with a Builder class</param> /// <param name="apiVersion">Alternative API-Version, if default is not sufficient</param> /// <returns>Metrics in JSON-Format</returns> public async Task <string> GetMetricAsJSONAsync( string resourceUri, Action <ODataQueryBuilder> oDataQueryBuilderDelegate, Action <InsightsQueryBuilder> insightsQueryBuilderDelegate = null, string apiVersion = null) { StringBuilder requestUri = CreateBaseRequestUri(resourceUri, "metrics", apiVersion); InsightsQueryBuilder insightsQueryBuilder = new InsightsQueryBuilder(); ODataQueryBuilder oDataQueryBuilder = null; if (oDataQueryBuilderDelegate != null) { oDataQueryBuilder = new ODataQueryBuilder(); oDataQueryBuilderDelegate(oDataQueryBuilder); } if (insightsQueryBuilderDelegate != null) { insightsQueryBuilderDelegate(insightsQueryBuilder); insightsQueryBuilder.AddODataQuery(oDataQueryBuilder); requestUri.Append("&"); requestUri.Append(insightsQueryBuilder.ToString()); } else { if (oDataQueryBuilderDelegate != null) { string oDataQuery = oDataQueryBuilder.ToString(); if (!string.IsNullOrEmpty(oDataQuery)) { requestUri.Append("&$filter="); requestUri.Append(oDataQuery); } } } HttpResponseMessage response = await this.HttpClient.GetAsync(requestUri.ToString()); if (response.IsSuccessStatusCode) { return(await response.Content.ReadAsStringAsync()); } else { throw new Exception(response.ReasonPhrase); } }
public void ODataQueryBuilderList_Operator_In_is_empty_1() { var constEmptyIntIds = new int[0]; var odataQueryBuilderOptions = new ODataQueryBuilderOptions { SuppressExceptionOfNullOrEmptyOperatorArgs = false }; var odataQueryBuilder = new ODataQueryBuilder <ODataInfoContainer>( _commonFixture.BaseUri, odataQueryBuilderOptions); odataQueryBuilder.Invoking( (r) => r .For <ODataTypeEntity>(s => s.ODataType) .ByList() .Filter((s, f, o) => o.In(s.IdType, constEmptyIntIds)) .ToUri()) .Should().Throw <ArgumentException>().WithMessage("Enumeration is empty or null"); }
public void ODataQueryBuilderList_Operator_In_Empty_Success() { var odataQueryBuilderOptions = new ODataQueryBuilderOptions { SuppressExceptionOfNullOrEmptyOperatorArgs = true }; var odataQueryBuilder = new ODataQueryBuilder <ODataInfoContainer>( _commonFixture.BaseUri, odataQueryBuilderOptions); var constStrIds = default(IEnumerable <string>); var constEmprtyStrListIds = new string[] { }.ToList(); var constIntIds = default(int[]); var constEmptyIntIds = new int[0]; var constIntListIds = new[] { 123, 512 }.ToList(); var newObject = new ODataTypeEntity { ODataKind = new ODataKindEntity { Sequence = constIntListIds } }; var newObjectSequenceArray = new ODataTypeEntity { ODataKind = new ODataKindEntity { SequenceArray = constIntIds } }; var uri = odataQueryBuilder .For <ODataTypeEntity>(s => s.ODataType) .ByList() .Filter((s, f, o) => o.In(s.ODataKind.ODataCode.Code, constStrIds) && o.In(s.ODataKind.ODataCode.Code, constEmprtyStrListIds) && o.In(s.IdType, constIntIds) && o.In(s.IdType, constEmptyIntIds) && o.In(s.IdType, constIntListIds) && o.In((int)s.IdRule, constIntIds) && o.In((int)s.IdRule, constIntListIds) && o.In(s.ODataKind.IdKind, newObject.ODataKind.Sequence) && o.In(s.ODataKind.ODataCode.IdCode, newObjectSequenceArray.ODataKind.SequenceArray)) .ToUri(); uri.OriginalString.Should().Be("http://mock/odata/ODataType?$filter=IdType in (123,512) and IdRule in (123,512) and ODataKind/IdKind in (123,512)"); }
public void ODataQueryBuilderList_Operator_In_is_null_4() { var constIntIds = default(int[]); var newObjectSequenceArray = new ODataTypeEntity { ODataKind = new ODataKindEntity { SequenceArray = constIntIds } }; var odataQueryBuilderOptions = new ODataQueryBuilderOptions { SuppressExceptionOfNullOrEmptyOperatorArgs = false }; var odataQueryBuilder = new ODataQueryBuilder <ODataInfoContainer>( _commonFixture.BaseUri, odataQueryBuilderOptions); odataQueryBuilder.Invoking( (r) => r .For <ODataTypeEntity>(s => s.ODataType) .ByList() .Filter((s, f, o) => o.In(s.ODataKind.ODataCode.IdCode, newObjectSequenceArray.ODataKind.SequenceArray)) .ToUri()) .Should().Throw <ArgumentException>().WithMessage("Enumeration is empty or null"); }
public void ODataQueryBuilderList_Test_Contains_is_null_or_empty_value_Success() { var odataQueryBuilderOptions = new ODataQueryBuilderOptions { SuppressExceptionOfNullOrEmptyFunctionArgs = true }; var odataQueryBuilder = new ODataQueryBuilder <ODataInfoContainer>( _commonFixture.BaseUri, odataQueryBuilderOptions); var constValue = "P"; var newObject = new ODataTypeEntity { TypeCode = string.Empty }; var uri = odataQueryBuilder .For <ODataTypeEntity>(s => s.ODataType) .ByList() .Filter((s, f) => f.Contains(f.ToLower(s.ODataKind.ODataCode.Code), null) || f.Contains(s.ODataKind.ODataCode.Code, constValue) || f.Contains(s.ODataKindNew.ODataCode.Code, newObject.TypeCode) || f.Contains(s.ODataKindNew.ODataCode.Code, string.Empty)) .ToUri(); uri.OriginalString.Should().Be("http://mock/odata/ODataType?$filter=contains(ODataKind/ODataCode/Code,'P')"); }
public IActionResult ApplyQueryFilter([FromBody] JsonDict jsonDict) { var queryDict = jsonDict["query"] as JsonDict; var optionsDict = jsonDict["options"] as JsonDict; var query = _eqService.GetQueryByJsonDict(queryDict); var lvo = optionsDict.ToListViewOptions(); //We can use OData query to get filtered information from Azure Storage var odataBuilder = new ODataQueryBuilder(query); string filterString = odataBuilder.Build(); var list = _context.Customers.Filter(filterString); // Here is another option of solving the same task // In this case we don't build OData query, so we can use all operators in our model. // However, it will work well only if Customers implements IQueryable interface // Otherwise it will load the whole table content from the storage before applying the query. // // list = _context.Customers.GetAll().DynamicQuery<Customer>(query).OrderBy(d => d.Id); // return(View("_CustomerListPartial", list)); }
public ODataQueryOptionListTest(CommonFixture commonFixture) { _commonFixture = commonFixture; _odataQueryBuilderDefault = new ODataQueryBuilder <ODataInfoContainer>( commonFixture.BaseUri, new ODataQueryBuilderOptions()); }