Skip to content

Resolve Query Interceptor and queryable Interceptor provider :) #8

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 12, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion PoweredSoft.DynamicQuery.Cli/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ private static void Play1()
new Aggregate { Path = "AgeStr", Type = AggregateType.Avg }
};;

var handler = new QueryHandler();
var handler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
handler.AddInterceptor(new PersonQueryInterceptor());
var result = handler.Execute(queryable, criteria);

Expand Down
2 changes: 2 additions & 0 deletions PoweredSoft.DynamicQuery.Core/IQueryHandler.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
Expand All @@ -9,6 +10,7 @@ namespace PoweredSoft.DynamicQuery.Core
public interface IInterceptableQueryHandler
{
void AddInterceptor(IQueryInterceptor interceptor);
IReadOnlyList<IQueryInterceptor> ResolveInterceptors<TSource, TResult>(IQueryCriteria criteria, IQueryable<TSource> queryable);
}

public interface IQueryHandler : IInterceptableQueryHandler
Expand Down
10 changes: 10 additions & 0 deletions PoweredSoft.DynamicQuery.Core/IQueryInterceptorProvider.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using System.Collections.Generic;
using System.Linq;

namespace PoweredSoft.DynamicQuery.Core
{
public interface IQueryInterceptorProvider
{
IEnumerable<IQueryInterceptor> GetInterceptors<TSource, TResult>(IQueryCriteria queryCriteria, IQueryable<TSource> queryable);
}
}
2 changes: 1 addition & 1 deletion PoweredSoft.DynamicQuery.Test/AggregateInterceptorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public void Simple()
Type = AggregateType.Avg,
Path = "ItemPrice"
});
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(new MockAggregateInterceptor());
var result = queryHandler.Execute(ctx.Items, criteria);
Assert.Equal(expected.PriceAtTheTime, result.Aggregates.First().Value);
Expand Down
4 changes: 2 additions & 2 deletions PoweredSoft.DynamicQuery.Test/AggregateTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public void WithoutGrouping()
}
};

var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
var result = queryHandler.Execute(ctx.OrderItems, criteria, new QueryExecutionOptions
{
GroupByInMemory = true
Expand Down Expand Up @@ -122,7 +122,7 @@ public void WithGrouping()
}
};

var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
var queryable = ctx.OrderItems.Include(t => t.Order);
var result = queryHandler.Execute(queryable, criteria, new QueryExecutionOptions
{
Expand Down
12 changes: 6 additions & 6 deletions PoweredSoft.DynamicQuery.Test/AsyncTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public void TestEmptyCriteria()
// query handler that is empty should be the same as running to list.
var aqf = new AsyncQueryableService(new[] { new AsyncQueryableHandlerService() });
var criteria = new QueryCriteria();
var queryHandler = new QueryHandlerAsync(aqf);
var queryHandler = new QueryHandlerAsync(aqf, Enumerable.Empty<IQueryInterceptorProvider>());
var result = await queryHandler.ExecuteAsync(queryable, criteria);
Assert.Equal(resultShouldMatch, result.Data);
});
Expand Down Expand Up @@ -66,7 +66,7 @@ public void WithGrouping()
}
};
var asyncService = new AsyncQueryableService(new[] { new AsyncQueryableHandlerService() });
var queryHandler = new QueryHandlerAsync(asyncService);
var queryHandler = new QueryHandlerAsync(asyncService, Enumerable.Empty<IQueryInterceptorProvider>());
var result = await queryHandler.ExecuteAsync(ctx.OrderItems.Include(t => t.Order.Customer), criteria, new QueryExecutionOptions
{
GroupByInMemory = true
Expand Down Expand Up @@ -118,7 +118,7 @@ public void SimpleFilter()
};

var asyncService = new AsyncQueryableService(new[] { new AsyncQueryableHandlerService() });
var queryHandler = new QueryHandlerAsync(asyncService);
var queryHandler = new QueryHandlerAsync(asyncService, Enumerable.Empty<IQueryInterceptorProvider>());
var result = await queryHandler.ExecuteAsync(ctx.Items, criteria);
Assert.Equal(resultShouldMatch, result.Data);
});
Expand Down Expand Up @@ -146,7 +146,7 @@ public void SimpleFilterWithNot()
};

var asyncService = new AsyncQueryableService(new[] { new AsyncQueryableHandlerService() });
var queryHandler = new QueryHandlerAsync(asyncService);
var queryHandler = new QueryHandlerAsync(asyncService, Enumerable.Empty<IQueryInterceptorProvider>());
var result = await queryHandler.ExecuteAsync(ctx.Items, criteria);
Assert.Equal(resultShouldMatch, result.Data);
});
Expand All @@ -166,7 +166,7 @@ public void TestPaging()
criteria.PageSize = 5;

var asyncService = new AsyncQueryableService(new[] { new AsyncQueryableHandlerService() });
var queryHandler = new QueryHandlerAsync(asyncService);
var queryHandler = new QueryHandlerAsync(asyncService, Enumerable.Empty<IQueryInterceptorProvider>());
var result = await queryHandler.ExecuteAsync(ctx.OrderItems, criteria);
Assert.Equal(resultShouldMatch, result.Data);
});
Expand Down Expand Up @@ -205,7 +205,7 @@ public void WithGroupingInterceptorOptions()
}
};
var asyncService = new AsyncQueryableService(new[] { new AsyncQueryableHandlerService() });
var queryHandler = new QueryHandlerAsync(asyncService);
var queryHandler = new QueryHandlerAsync(asyncService, Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(new MockQueryExecutionOptionsInterceptor());
var result = await queryHandler.ExecuteAsync(ctx.OrderItems.Include(t => t.Order.Customer), criteria);

Expand Down
4 changes: 2 additions & 2 deletions PoweredSoft.DynamicQuery.Test/BeforeFilterTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public void NonGeneric()
queryable = (IQueryable<Order>)interceptor.InterceptBeforeFiltering(criteria, queryable);

// query handler should pass by the same interceptor.
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(interceptor);
var result = queryHandler.Execute(ctx.Orders, criteria);

Expand All @@ -75,7 +75,7 @@ public void Generic()
queryable = interceptor.InterceptBeforeFiltering(criteria, queryable);

// query handler should pass by the same interceptor.
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(interceptor);
var result = queryHandler.Execute(ctx.Orders, criteria);

Expand Down
7 changes: 4 additions & 3 deletions PoweredSoft.DynamicQuery.Test/ConvertibleInterceptorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using PoweredSoft.DynamicQuery.Test.Mock;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Xunit;

Expand Down Expand Up @@ -77,7 +78,7 @@ public void NonGeneric()
MockContextFactory.SeedAndTestContextFor("QueryConvertInterceptorTests_NonGeneric", TestSeeders.SimpleSeedScenario, ctx =>
{
var criteria = new QueryCriteria();
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(new MockQueryConvertInterceptor());
var result = queryHandler.Execute<Customer, CustomerModel>(ctx.Customers, criteria);
Assert.All(result.Data, t => Assert.IsType<CustomerModel>(t));
Expand All @@ -90,7 +91,7 @@ public void Generic()
MockContextFactory.SeedAndTestContextFor("ConvertibleIntereceptorTests_Generic", TestSeeders.SimpleSeedScenario, ctx =>
{
var criteria = new QueryCriteria();
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(new MockQueryConvertGenericInterceptor());
var result = queryHandler.Execute<Customer, CustomerModel>(ctx.Customers, criteria);
Assert.All(result.Data, t => Assert.IsType<CustomerModel>(t));
Expand All @@ -103,7 +104,7 @@ public void Generic2()
MockContextFactory.SeedAndTestContextFor("ConvertibleIntereceptorTests_Generic2", TestSeeders.SimpleSeedScenario, ctx =>
{
var criteria = new QueryCriteria();
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(new MockQueryConvertGenericInterceptor2());
var result = queryHandler.Execute<Customer, CustomerModel>(ctx.Customers, criteria);
Assert.All(result.Data, t => Assert.IsType<CustomerModel>(t));
Expand Down
5 changes: 3 additions & 2 deletions PoweredSoft.DynamicQuery.Test/CriteriaTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using PoweredSoft.DynamicQuery.Core;
using PoweredSoft.DynamicQuery.Test.Mock;
using Xunit;

Expand All @@ -19,7 +20,7 @@ public void TestEmptyCriteria()

// query handler that is empty should be the same as running to list.
var criteria = new QueryCriteria();
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
var result = queryHandler.Execute(queryable, criteria);
Assert.Equal(resultShouldMatch, result.Data);
});
Expand All @@ -38,7 +39,7 @@ public void TestPaging()
criteria.Page = 2;
criteria.PageSize = 5;

var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
var result = queryHandler.Execute(ctx.OrderItems, criteria);
Assert.Equal(resultShouldMatch, result.Data);
});
Expand Down
8 changes: 4 additions & 4 deletions PoweredSoft.DynamicQuery.Test/FilterInterceptorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public void Simple()
}
};

var query = new QueryHandler();
var query = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
query.AddInterceptor(new MockFilterInterceptorA());
var result = query.Execute(queryable, criteria);

Expand All @@ -83,7 +83,7 @@ public void SimpleWithExtensions()
}
};

var query = new QueryHandler();
var query = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
query.AddInterceptor(new MockFilterInterceptorAWithExtension());
var result = query.Execute(queryable, criteria);

Expand All @@ -108,7 +108,7 @@ public void SimpleWithExtensions2()
}
};

var query = new QueryHandler();
var query = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
query.AddInterceptor(new MockFilterInterceptorAWithExtension());
var result = query.Execute(queryable, criteria);

Expand All @@ -133,7 +133,7 @@ public void Multi()
}
};

var query = new QueryHandler();
var query = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
query.AddInterceptor(new MockFilterInterceptorA());
query.AddInterceptor(new MockFilterInterceptorB());
var result = query.Execute(queryable, criteria);
Expand Down
8 changes: 4 additions & 4 deletions PoweredSoft.DynamicQuery.Test/FilterTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public void TestInversionOfControl()
Filters = new List<IFilter> { new MockIsChuckFilter() }
};

var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
var result = queryHandler.Execute(ctx.Customers, criteria);
Assert.Equal(resultShouldMatch, result.Data);
});
Expand All @@ -58,7 +58,7 @@ public void SimpleFilter()
}
};

var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
var result = queryHandler.Execute(ctx.Items, criteria);
Assert.Equal(resultShouldMatch, result.Data);
});
Expand Down Expand Up @@ -89,7 +89,7 @@ public void CompositeFilter()
}
};

var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
var result = queryHandler.Execute(ctx.Customers, criteria);
Assert.Equal(resultShouldMatch, result.Data);
});
Expand Down Expand Up @@ -125,7 +125,7 @@ public void MoreComplexCompositeFilter()
}
};

var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
var result = queryHandler.Execute(ctx.Customers, criteria);
Assert.Equal(resultShouldMatch, result.Data);
});
Expand Down
6 changes: 3 additions & 3 deletions PoweredSoft.DynamicQuery.Test/GroupInterceptorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public void Simple()

var criteria = new QueryCriteria();
criteria.Groups.Add(new Group { Path = "CustomerFirstName" });
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(new MockGroupInterceptor());
var result = queryHandler.Execute(ctx.Orders.Include(t => t.Customer), criteria, new QueryExecutionOptions
{
Expand All @@ -52,7 +52,7 @@ public void Simple()
[Fact]
public void WithInterptorSimple()
{
MockContextFactory.SeedAndTestContextFor("GroupInterceptorTests_Simple", TestSeeders.SimpleSeedScenario, ctx =>
MockContextFactory.SeedAndTestContextFor("GroupInterceptorTests_WithInterptorSimple", TestSeeders.SimpleSeedScenario, ctx =>
{
var expected = ctx.Orders
.OrderBy(t => t.Customer.FirstName)
Expand All @@ -62,7 +62,7 @@ public void WithInterptorSimple()

var criteria = new QueryCriteria();
criteria.Groups.Add(new Group { Path = "CustomerFirstName" });
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(new MockGroupInterceptor());
queryHandler.AddInterceptor(new MockQueryExecutionOptionsInterceptor());
var result = queryHandler.Execute(ctx.Orders.Include(t => t.Customer), criteria);
Expand Down
6 changes: 3 additions & 3 deletions PoweredSoft.DynamicQuery.Test/GroupTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public void Simple()
}
};

var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
var result = queryHandler.Execute(ctx.Orders, criteria, new QueryExecutionOptions
{
GroupByInMemory = true,
Expand Down Expand Up @@ -80,7 +80,7 @@ public void GroupComplex()
}
};

var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
var result = queryHandler.Execute(ctx.Tickets, criteria, new QueryExecutionOptions
{
GroupByInMemory = true
Expand Down Expand Up @@ -117,7 +117,7 @@ public void InterceptorsWithGrouping()
};

var interceptor = new InterceptorsWithGrouping();
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(interceptor);
var result = queryHandler.Execute<Ticket, InterceptorWithGroupingFakeModel>(ctx.Tickets, criteria, new QueryExecutionOptions
{
Expand Down
4 changes: 2 additions & 2 deletions PoweredSoft.DynamicQuery.Test/IncludeStrategyTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public void NonGeneric()
queryable = (IQueryable<Order>)interceptor.InterceptIncludeStrategy(criteria, queryable);

// query handler should pass by the same interceptor.
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(interceptor);
var result = queryHandler.Execute(ctx.Orders, criteria);

Expand All @@ -76,7 +76,7 @@ public void Generic()
queryable = interceptor.InterceptIncludeStrategy(criteria, queryable);

// query handler should pass by the same interceptor.
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(interceptor);
var result = queryHandler.Execute(ctx.Orders, criteria);

Expand Down
4 changes: 2 additions & 2 deletions PoweredSoft.DynamicQuery.Test/NoSortTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public void NonGeneric()
queryable = (IQueryable<Order>)interceptor.InterceptNoSort(criteria, queryable);

// query handler should pass by the same interceptor.
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(interceptor);
var result = queryHandler.Execute(ctx.Orders, criteria);

Expand All @@ -76,7 +76,7 @@ public void Generic()
queryable = interceptor.InterceptNoSort(criteria, queryable);

// query handler should pass by the same interceptor.
var queryHandler = new QueryHandler();
var queryHandler = new QueryHandler(Enumerable.Empty<IQueryInterceptorProvider>());
queryHandler.AddInterceptor(interceptor);
var result = queryHandler.Execute(ctx.Orders, criteria);

Expand Down
Loading