Skip to content

Commit 97202b4

Browse files
authored
Merge pull request #46 from trenoncourt/develop
1.6.0
2 parents 8e70878 + 6ded6f2 commit 97202b4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1334
-709
lines changed

AutoQueryable.sln

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoQueryable.Nancy.Filter"
2727
EndProject
2828
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoQueryable.Sample.Nancy", "sample\AutoQueryable.Sample.Nancy\AutoQueryable.Sample.Nancy.csproj", "{5D231472-9941-4E90-950B-3709583E832A}"
2929

30-
EndProject
31-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoQueryable.Core", "src\AutoQueryable.Core\AutoQueryable.Core.csproj", "{D8FBFF88-111D-41F8-A958-7C6FB66FAC9F}"
32-
EndProject
33-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoQueryable.Providers.OData", "src\AutoQueryable.Providers.OData\AutoQueryable.Providers.OData.csproj", "{8335B90F-6465-4882-9DA0-460BE0EA8DF4}"
3430
EndProject
3531
Global
3632
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -66,14 +62,6 @@ Global
6662
{5D231472-9941-4E90-950B-3709583E832A}.Debug|Any CPU.Build.0 = Debug|Any CPU
6763
{5D231472-9941-4E90-950B-3709583E832A}.Release|Any CPU.ActiveCfg = Release|Any CPU
6864
{5D231472-9941-4E90-950B-3709583E832A}.Release|Any CPU.Build.0 = Release|Any CPU
69-
{D8FBFF88-111D-41F8-A958-7C6FB66FAC9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
70-
{D8FBFF88-111D-41F8-A958-7C6FB66FAC9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
71-
{D8FBFF88-111D-41F8-A958-7C6FB66FAC9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
72-
{D8FBFF88-111D-41F8-A958-7C6FB66FAC9F}.Release|Any CPU.Build.0 = Release|Any CPU
73-
{8335B90F-6465-4882-9DA0-460BE0EA8DF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
74-
{8335B90F-6465-4882-9DA0-460BE0EA8DF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
75-
{8335B90F-6465-4882-9DA0-460BE0EA8DF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
76-
{8335B90F-6465-4882-9DA0-460BE0EA8DF4}.Release|Any CPU.Build.0 = Release|Any CPU
7765
EndGlobalSection
7866
GlobalSection(SolutionProperties) = preSolution
7967
HideSolutionNode = FALSE
@@ -86,7 +74,5 @@ Global
8674
{A65BC954-07A1-40D9-BBB8-46349273D84E} = {A9207ADA-C81F-4112-BC31-35EA2A8362F7}
8775
{0B24F998-9851-4F28-9A00-9388D8BE398C} = {2EC34A81-603E-458D-B1EA-B0BA814DF61D}
8876
{5D231472-9941-4E90-950B-3709583E832A} = {4AB59492-513F-40B7-8253-0BC7ED0E8A71}
89-
{D8FBFF88-111D-41F8-A958-7C6FB66FAC9F} = {2EC34A81-603E-458D-B1EA-B0BA814DF61D}
90-
{8335B90F-6465-4882-9DA0-460BE0EA8DF4} = {2EC34A81-603E-458D-B1EA-B0BA814DF61D}
9177
EndGlobalSection
9278
EndGlobal

sample/AutoQueryable.Sample.EfCore/Contexts/AutoQueryableContext.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33

44
namespace AutoQueryable.Sample.EfCore.Contexts
55
{
6-
public class AutoQueryableContext : DbContext
6+
public class AutoQueryableDbContext : DbContext
77
{
8-
public AutoQueryableContext(DbContextOptions<AutoQueryableContext> options)
8+
public AutoQueryableDbContext(DbContextOptions<AutoQueryableDbContext> options)
99
: base(options)
1010
{
1111

sample/AutoQueryable.Sample.EfCore/Controllers/ProductController.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class ProductController : ControllerBase
2323
/// <returns></returns>
2424
[AutoQueryable(UseBaseType = true)]
2525
[HttpGet]
26-
public IQueryable Get([FromServices] AutoQueryableContext context)
26+
public IQueryable Get([FromServices] AutoQueryableDbContext context)
2727
{
2828
return context.Product;
2929
}
@@ -36,7 +36,7 @@ public IQueryable Get([FromServices] AutoQueryableContext context)
3636
/// <returns></returns>
3737
[AutoQueryable]
3838
[HttpGet("with_dto_projection")]
39-
public IQueryable GetWithDtoProjection([FromServices] AutoQueryableContext context)
39+
public IQueryable GetWithDtoProjection([FromServices] AutoQueryableDbContext context)
4040
{
4141
return context.Product.Select(p => new ProductDto
4242
{
@@ -53,7 +53,7 @@ public IQueryable GetWithDtoProjection([FromServices] AutoQueryableContext conte
5353
/// <param name="context"></param>
5454
/// <returns></returns>
5555
[HttpGet("disallow")]
56-
public dynamic GetWithNotAllowedClauses([FromServices] AutoQueryableContext context)
56+
public dynamic GetWithNotAllowedClauses([FromServices] AutoQueryableDbContext context)
5757
{
5858
return context.Product.AutoQueryable(Request.QueryString.Value,
5959
new AutoQueryableProfile {

sample/AutoQueryable.Sample.EfCore/Controllers/ProductOdataController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class ProductOdataController
1919
/// <returns></returns>
2020
[AutoQueryable(ProviderType = ProviderType.OData)]
2121
[HttpGet]
22-
public IQueryable Get([FromServices] AutoQueryableContext context)
22+
public IQueryable Get([FromServices] AutoQueryableDbContext context)
2323
{
2424
return context.Product;
2525
}

sample/AutoQueryable.Sample.EfCore/Startup.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,18 @@ public void ConfigureServices(IServiceCollection services)
2424
});
2525

2626
services.AddEntityFramework()
27-
.AddDbContext<AutoQueryableContext>(options => options.UseInMemoryDatabase());
27+
.AddDbContext<AutoQueryableDbContext>(options => options.UseInMemoryDatabase());
2828
}
2929

3030
public void Configure(IApplicationBuilder app)
3131
{
32-
var context = app.ApplicationServices.GetService<AutoQueryableContext>();
32+
var context = app.ApplicationServices.GetService<AutoQueryableDbContext>();
3333
Seed(context);
3434

3535
app.UseMvc();
3636
}
3737

38-
private void Seed(AutoQueryableContext context)
38+
private void Seed(AutoQueryableDbContext context)
3939
{
4040
var fourthCategory = new ProductCategory
4141
{
Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
<Project Sdk="Microsoft.NET.Sdk">
2-
32
<PropertyGroup>
43
<Description>AutoQueryable.AspNetCore.Filter add filterAttribute for AutoQueryable to Asp.Net &gt;=4.6.</Description>
54
<AssemblyTitle>AutoQueryable.AspNetCore.Filter add filterAttribute for AutoQueryable to Asp.Net &gt;=4.6.</AssemblyTitle>
6-
<VersionPrefix>1.5.1</VersionPrefix>
7-
<Version>1.5.1</Version>
5+
<VersionPrefix>1.6.0</VersionPrefix>
6+
<Version>1.6.0</Version>
87
<Authors>Thibaut Renoncourt</Authors>
98
<TargetFramework>net46</TargetFramework>
109
<AssemblyName>AutoQueryable.AspNet.Filter</AssemblyName>
@@ -16,12 +15,10 @@
1615
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
1716
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
1817
</PropertyGroup>
19-
2018
<ItemGroup Condition=" '$(TargetFramework)' == 'net46' ">
2119
<ProjectReference Include="..\AutoQueryable\AutoQueryable.csproj" />
2220
<PackageReference Include="Microsoft.AspNet.WebApi.Core" Version="5.2.3" />
2321
<Reference Include="System" />
2422
<Reference Include="Microsoft.CSharp" />
2523
</ItemGroup>
26-
27-
</Project>
24+
</Project>

src/AutoQueryable.AspNet.Filter/FilterAttributes/AutoQueryableFilter.cs

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
using System.Web.Http.Filters;
55
using AutoQueryable.Core.Enums;
66
using AutoQueryable.Core.Models;
7+
using AutoQueryable.Core.Models.Abstractions;
78
using AutoQueryable.Helpers;
89

910
namespace AutoQueryable.AspNet.Filter.FilterAttributes
1011
{
11-
public class AutoQueryableAttribute : ActionFilterAttribute
12+
public class AutoQueryableAttribute : ActionFilterAttribute, IFilterProfile
1213
{
1314
public string[] SelectableProperties { get; set; }
1415

@@ -22,23 +23,31 @@ public class AutoQueryableAttribute : ActionFilterAttribute
2223

2324
public string[] UnGroupableProperties { get; set; }
2425

25-
public ClauseType? AllowedClauses { get; set; }
26+
public ClauseType AllowedClauses { get; set; }
2627

27-
public ClauseType? DisAllowedClauses { get; set; }
28+
public ClauseType DisAllowedClauses { get; set; }
2829

29-
public ConditionType? AllowedConditions { get; set; }
30+
public ConditionType AllowedConditions { get; set; }
3031

31-
public ConditionType? DisAllowedConditions { get; set; }
32+
public ConditionType DisAllowedConditions { get; set; }
3233

33-
public WrapperPartType? AllowedWrapperPartType { get; set; }
34+
public WrapperPartType AllowedWrapperPartType { get; set; }
3435

35-
public WrapperPartType? DisAllowedWrapperPartType { get; set; }
36+
public WrapperPartType DisAllowedWrapperPartType { get; set; }
3637

37-
public int? MaxToTake { get; set; }
38+
public int MaxToTake { get; set; }
39+
40+
public int DefaultToTake { get; set; }
3841

39-
public int? MaxToSkip { get; set; }
42+
public int MaxToSkip { get; set; }
4043

41-
public int? MaxDepth { get; set; }
44+
public int MaxDepth { get; set; }
45+
46+
public string DefaultOrderBy { get; set; }
47+
48+
public string DefaultOrderByDesc { get; set; }
49+
50+
public bool UseBaseType { get; set; }
4251

4352

4453
public override void OnActionExecuted(HttpActionExecutedContext context)
@@ -48,25 +57,11 @@ public override void OnActionExecuted(HttpActionExecutedContext context)
4857
{
4958
dynamic query = content.Value;
5059
if (query == null) throw new Exception("Unable to retreive value of IQueryable from context result.");
51-
Type entityType = query.GetType().GenericTypeArguments[0];
60+
5261
string queryString = context.Request.RequestUri.Query;
53-
var result = QueryableHelper.GetAutoQuery(queryString, entityType, query, new AutoQueryableProfile {
54-
SelectableProperties = SelectableProperties,
55-
UnselectableProperties = UnselectableProperties,
56-
SortableProperties = SortableProperties,
57-
UnSortableProperties = UnSortableProperties,
58-
GroupableProperties = GroupableProperties,
59-
UnGroupableProperties = UnGroupableProperties,
60-
AllowedClauses = AllowedClauses,
61-
DisAllowedClauses = DisAllowedClauses,
62-
AllowedConditions = AllowedConditions,
63-
DisAllowedConditions = DisAllowedConditions,
64-
AllowedWrapperPartType = AllowedWrapperPartType,
65-
DisAllowedWrapperPartType = DisAllowedWrapperPartType,
66-
MaxToTake = MaxToTake,
67-
MaxToSkip = MaxToSkip,
68-
MaxDepth = MaxDepth
69-
});
62+
AutoQueryableContext autoQueryableContext =
63+
AutoQueryableContext.Create(query, queryString, AutoQueryableProfile.From(this));
64+
var result = autoQueryableContext.GetAutoQuery();
7065
context.Response.Content = new ObjectContent(result.GetType(), result, new JsonMediaTypeFormatter());
7166
}
7267
}

src/AutoQueryable.AspNetCore.Filter/AutoQueryable.AspNetCore.Filter.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
<PropertyGroup>
44
<Description>AutoQueryable.AspNetCore.Filter add filterAttribute for AutoQueryable to Asp.Net Core.</Description>
55
<AssemblyTitle>AutoQueryable.AspNetCore.Filter add filterAttribute for AutoQueryable to Asp.Net Core.</AssemblyTitle>
6-
<VersionPrefix>1.5.1</VersionPrefix>
7-
<Version>1.5.1</Version>
6+
<VersionPrefix>1.6.0</VersionPrefix>
7+
<Version>1.6.0</Version>
88
<Authors>Thibaut Renoncourt</Authors>
99
<TargetFramework>netstandard1.6</TargetFramework>
1010
<AssemblyName>AutoQueryable.AspNetCore.Filter</AssemblyName>
Lines changed: 22 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
using System;
22
using AutoQueryable.Core.Enums;
33
using AutoQueryable.Core.Models;
4+
using AutoQueryable.Core.Models.Abstractions;
45
using Microsoft.AspNetCore.Mvc;
56
using Microsoft.AspNetCore.Mvc.Filters;
67
using AutoQueryable.Helpers;
78

89
namespace AutoQueryable.AspNetCore.Filter.FilterAttributes
910
{
10-
public class AutoQueryableAttribute : ActionFilterAttribute
11+
public class AutoQueryableAttribute : ActionFilterAttribute, IFilterProfile
1112
{
1213
public string[] SelectableProperties { get; set; }
1314

@@ -21,24 +22,30 @@ public class AutoQueryableAttribute : ActionFilterAttribute
2122

2223
public string[] UnGroupableProperties { get; set; }
2324

24-
public ClauseType? AllowedClauses { get; set; }
25+
public ClauseType AllowedClauses { get; set; }
2526

26-
public ClauseType? DisAllowedClauses { get; set; }
27+
public ClauseType DisAllowedClauses { get; set; }
2728

28-
public ConditionType? AllowedConditions { get; set; }
29+
public ConditionType AllowedConditions { get; set; }
2930

30-
public ConditionType? DisAllowedConditions { get; set; }
31+
public ConditionType DisAllowedConditions { get; set; }
3132

32-
public WrapperPartType? AllowedWrapperPartType { get; set; }
33+
public WrapperPartType AllowedWrapperPartType { get; set; }
3334

34-
public WrapperPartType? DisAllowedWrapperPartType { get; set; }
35+
public WrapperPartType DisAllowedWrapperPartType { get; set; }
3536

36-
public int? MaxToTake { get; set; }
37+
public int MaxToTake { get; set; }
38+
39+
public int DefaultToTake { get; set; }
3740

38-
public int? MaxToSkip { get; set; }
41+
public int MaxToSkip { get; set; }
3942

40-
public int? MaxDepth { get; set; }
43+
public int MaxDepth { get; set; }
44+
45+
public string DefaultOrderBy { get; set; }
4146

47+
public string DefaultOrderByDesc { get; set; }
48+
4249
public ProviderType ProviderType { get; set; }
4350

4451
public bool UseBaseType { get; set; }
@@ -47,29 +54,11 @@ public override void OnActionExecuted(ActionExecutedContext context)
4754
{
4855
dynamic query = ((ObjectResult)context.Result).Value;
4956
if (query == null) throw new Exception("Unable to retreive value of IQueryable from context result.");
50-
Type entityType = query.GetType().GenericTypeArguments[0];
51-
52-
string queryString = context.HttpContext.Request.QueryString.HasValue ? context.HttpContext.Request.QueryString.Value : null;
53-
context.Result = new OkObjectResult(QueryableHelper.GetAutoQuery(queryString, entityType, query, new AutoQueryableProfile
54-
{
55-
SelectableProperties = SelectableProperties,
56-
UnselectableProperties = UnselectableProperties,
57-
SortableProperties = SortableProperties,
58-
UnSortableProperties = UnSortableProperties,
59-
GroupableProperties = GroupableProperties,
60-
UnGroupableProperties = UnGroupableProperties,
61-
AllowedClauses = AllowedClauses,
62-
DisAllowedClauses = DisAllowedClauses,
63-
AllowedConditions = AllowedConditions,
64-
DisAllowedConditions = DisAllowedConditions,
65-
AllowedWrapperPartType = AllowedWrapperPartType,
66-
DisAllowedWrapperPartType = DisAllowedWrapperPartType,
67-
MaxToTake = MaxToTake,
68-
MaxToSkip = MaxToSkip,
69-
MaxDepth = MaxDepth,
70-
ProviderType = ProviderType,
71-
UseBaseType = UseBaseType
72-
}));
57+
58+
string queryString = context.HttpContext.Request.QueryString.HasValue ? context.HttpContext.Request.QueryString.Value : null;;
59+
AutoQueryableContext autoQueryableContext =
60+
AutoQueryableContext.Create(query, queryString, AutoQueryableProfile.From(this));
61+
context.Result = new OkObjectResult(autoQueryableContext.GetAutoQuery());
7362
}
7463
}
7564
}

src/AutoQueryable.Nancy.Filter/AfterPipelileExtensions.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ public static void AutoQueryable(this AfterPipeline afterPipeline, NancyContext
2424
{
2525
using (var writer = new StreamWriter(stream))
2626
{
27-
var result = QueryableHelper.GetAutoQuery(queryString, entityType, query, profile);
27+
profile = profile ?? new AutoQueryableProfile();
28+
var autoQueryableContext = AutoQueryableContext.Create(query, queryString, profile);
29+
var result = autoQueryableContext.GetAutoQuery();
2830
writer.Write(JsonConvert.SerializeObject(result));
2931
}
3032
};

0 commit comments

Comments
 (0)