Skip to content

Commit

Permalink
Set AutoQueryable targer netstandard 1.3 & net451
Browse files Browse the repository at this point in the history
Add FilterAttributes for aspnet & aspnet core
Separate filter attributes in different nuget packages
  • Loading branch information
trenoncourt committed Dec 18, 2016
1 parent 2226226 commit c224e13
Show file tree
Hide file tree
Showing 10 changed files with 59 additions and 83 deletions.
1 change: 1 addition & 0 deletions build.bat
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ dotnet build

dotnet pack ".\src\AutoQueryable" -c Release -o ".\bin\NuGetPackages"
dotnet pack ".\src\AutoQueryable.AspNet.Filter" -c Release -o ".\bin\NuGetPackages"
dotnet pack ".\src\AutoQueryable.AspNetCore.Filter" -c Release -o ".\bin\NuGetPackages"

pause
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
using System;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Formatting;
using System.Web.Http.Filters;
using AutoQueryable.Extensions;
using AutoQueryable.Helpers;
using AutoQueryable.Models;

namespace AutoQueryable.AspNet.Filter.Filters
namespace AutoQueryable.AspNet.Filter.FilterAttributes
{
public class AutoQueryableFilter : ActionFilterAttribute
public class AutoQueryableAttribute : ActionFilterAttribute
{
public string[] UnselectableProperties { get; set; }

Expand All @@ -18,13 +17,11 @@ public override void OnActionExecuted(HttpActionExecutedContext context)
var content = context.Response.Content as ObjectContent;
if (content != null)
{
IQueryable<object> query = content.Value as IQueryable<object>;
dynamic query = content.Value;
if (query == null) throw new Exception("Unable to retreive value of IQueryable from context result.");
Type entityType = query.GetType().GenericTypeArguments[0];

string queryString = context.Request.RequestUri.Query;
// Work on generic type directly, for dto projection
var result = query.AutoQueryable(queryString, new AutoQueryableProfile {UnselectableProperties = UnselectableProperties});
var result = QueryableHelper.GetAutoQuery(queryString, entityType, query, new AutoQueryableProfile {UnselectableProperties = UnselectableProperties});
context.Response.Content = new ObjectContent(result.GetType(), result, new JsonMediaTypeFormatter());
}
}
Expand Down
14 changes: 12 additions & 2 deletions src/AutoQueryable.AspNet.Filter/project.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
{
"version": "0.0.1",

"dependencies": {
Expand All @@ -12,5 +12,15 @@

}
}
}
},
"packOptions": {
"licenseUrl": "https://raw.githubusercontent.com/trenoncourt/AutoQueryable/master/LICENSE",
"projectUrl": "https://github.com/trenoncourt/AutoQueryable",
"tags": [ "AutoQueryable", "AutoQuery", "OData" ],
"owners": [ "trenoncourt" ]
},

"title": "AutoQueryable.AspNetCore.Filter add filterAttribute for AutoQueryable to Asp.Net >=4.5.1.",
"description": "AutoQueryable.AspNetCore.Filter add filterAttribute for AutoQueryable to Asp.Net >=4.5.1.",
"authors": [ "Thibaut Renoncourt" ]
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using System;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using AutoQueryable.Helpers;
using AutoQueryable.Models;

namespace AutoQueryable.AspNetCore.Filter.FilterAttributes
{
public class AutoQueryableAttribute : ActionFilterAttribute
{
public string[] UnselectableProperties { get; set; }

public override void OnActionExecuted(ActionExecutedContext context)
{
dynamic query = ((ObjectResult)context.Result).Value;
if (query == null) throw new Exception("Unable to retreive value of IQueryable from context result.");
Type entityType = query.GetType().GenericTypeArguments[0];

string queryString = context.HttpContext.Request.QueryString.HasValue ? context.HttpContext.Request.QueryString.Value : null;
context.Result = new OkObjectResult(QueryableHelper.GetAutoQuery(queryString, entityType, query, new AutoQueryableProfile { UnselectableProperties = UnselectableProperties }));
}
}
}
32 changes: 0 additions & 32 deletions src/AutoQueryable.AspNetCore.Filter/Filters/AutoQueryableFilter.cs

This file was deleted.

12 changes: 11 additions & 1 deletion src/AutoQueryable.AspNetCore.Filter/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,15 @@

"frameworks": {
"netstandard1.6": {}
}
},
"packOptions": {
"licenseUrl": "https://raw.githubusercontent.com/trenoncourt/AutoQueryable/master/LICENSE",
"projectUrl": "https://github.com/trenoncourt/AutoQueryable",
"tags": [ "AutoQueryable", "AutoQuery", "OData" ],
"owners": [ "trenoncourt" ]
},

"title": "AutoQueryable.AspNetCore.Filter add filterAttribute for AutoQueryable to Asp.Net Core.",
"description": "AutoQueryable.AspNetCore.Filter add filterAttribute for AutoQueryable to Asp.Net Core.",
"authors": [ "Thibaut Renoncourt" ]
}
8 changes: 2 additions & 6 deletions src/AutoQueryable/Helpers/QueryableHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,10 @@ public static dynamic GetAutoQuery<TEntity>(string queryString, Type entityType,
{
if (string.IsNullOrEmpty(queryString))
{
if (profile?.UnselectableProperties == null)
{
return query;
}
IEnumerable<string> columns = SelectHelper.GetSelectableColumns(profile.UnselectableProperties, entityType);
IEnumerable<string> columns = SelectHelper.GetSelectableColumns(profile?.UnselectableProperties, entityType);
return query.Select(SelectHelper.GetSelector<TEntity>(string.Join(",", columns.ToArray())));
}
string[] queryStringParts = queryString?.Replace("?", "")?.Split('&');
string[] queryStringParts = queryString.Replace("?", "").Split('&');

var criteriaManager = new CriteriaManager();
IList<Criteria> criterias = criteriaManager.GetCriterias(entityType, queryStringParts).ToList();
Expand Down
4 changes: 4 additions & 0 deletions src/AutoQueryable/Helpers/SelectHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,10 @@ private static MemberExpression GetMemberExpression<TEntity>(string column, Para

public static IEnumerable<string> GetSelectableColumns(Clause selectClause, string[] unselectableProperties, Type entityType)
{
if (selectClause == null)
{
return GetSelectableColumns(unselectableProperties, entityType);
}
IEnumerable<string> columns = selectClause.Value.Split(',');
if (unselectableProperties != null)
{
Expand Down
2 changes: 1 addition & 1 deletion src/AutoQueryable/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
},

"frameworks": {
"netstandard1.6": {
"netstandard1.3": {
"dependencies": {
"System.Reflection.Emit": "4.3.0",
"System.Linq.Queryable": "4.3.0",
Expand Down

0 comments on commit c224e13

Please sign in to comment.