@@ -21,15 +21,17 @@ public class DefaultEntityRepository<TEntity>
2121 {
2222 public DefaultEntityRepository (
2323 IJsonApiContext jsonApiContext ,
24- IDbContextResolver contextResolver )
25- : base ( jsonApiContext , contextResolver )
24+ IDbContextResolver contextResolver ,
25+ ResourceDefinition < TEntity > resourceDefinition = null )
26+ : base ( jsonApiContext , contextResolver , resourceDefinition )
2627 { }
2728
2829 public DefaultEntityRepository (
2930 ILoggerFactory loggerFactory ,
3031 IJsonApiContext jsonApiContext ,
31- IDbContextResolver contextResolver )
32- : base ( loggerFactory , jsonApiContext , contextResolver )
32+ IDbContextResolver contextResolver ,
33+ ResourceDefinition < TEntity > resourceDefinition = null )
34+ : base ( loggerFactory , jsonApiContext , contextResolver , resourceDefinition )
3335 { }
3436 }
3537
@@ -47,27 +49,32 @@ public class DefaultEntityRepository<TEntity, TId>
4749 private readonly ILogger _logger ;
4850 private readonly IJsonApiContext _jsonApiContext ;
4951 private readonly IGenericProcessorFactory _genericProcessorFactory ;
52+ private readonly ResourceDefinition < TEntity > _resourceDefinition ;
5053
5154 public DefaultEntityRepository (
5255 IJsonApiContext jsonApiContext ,
53- IDbContextResolver contextResolver )
56+ IDbContextResolver contextResolver ,
57+ ResourceDefinition < TEntity > resourceDefinition = null )
5458 {
5559 _context = contextResolver . GetContext ( ) ;
5660 _dbSet = contextResolver . GetDbSet < TEntity > ( ) ;
5761 _jsonApiContext = jsonApiContext ;
5862 _genericProcessorFactory = _jsonApiContext . GenericProcessorFactory ;
63+ _resourceDefinition = resourceDefinition ;
5964 }
6065
6166 public DefaultEntityRepository (
6267 ILoggerFactory loggerFactory ,
6368 IJsonApiContext jsonApiContext ,
64- IDbContextResolver contextResolver )
69+ IDbContextResolver contextResolver ,
70+ ResourceDefinition < TEntity > resourceDefinition = null )
6571 {
6672 _context = contextResolver . GetContext ( ) ;
6773 _dbSet = contextResolver . GetDbSet < TEntity > ( ) ;
6874 _jsonApiContext = jsonApiContext ;
6975 _logger = loggerFactory . CreateLogger < DefaultEntityRepository < TEntity , TId > > ( ) ;
7076 _genericProcessorFactory = _jsonApiContext . GenericProcessorFactory ;
77+ _resourceDefinition = resourceDefinition ;
7178 }
7279
7380 /// <inheritdoc />
@@ -82,13 +89,38 @@ public virtual IQueryable<TEntity> Get()
8289 /// <inheritdoc />
8390 public virtual IQueryable < TEntity > Filter ( IQueryable < TEntity > entities , FilterQuery filterQuery )
8491 {
92+ if ( _resourceDefinition != null )
93+ {
94+ var defaultQueryFilters = _resourceDefinition . GetQueryFilters ( ) ;
95+ if ( defaultQueryFilters != null && defaultQueryFilters . TryGetValue ( filterQuery . Attribute , out var defaultQueryFilter ) == true )
96+ {
97+ return defaultQueryFilter ( entities , filterQuery . Value ) ;
98+ }
99+ }
100+
85101 return entities . Filter ( _jsonApiContext , filterQuery ) ;
86102 }
87103
88104 /// <inheritdoc />
89105 public virtual IQueryable < TEntity > Sort ( IQueryable < TEntity > entities , List < SortQuery > sortQueries )
90106 {
91- return entities . Sort ( sortQueries ) ;
107+ if ( sortQueries != null && sortQueries . Count > 0 )
108+ return entities . Sort ( sortQueries ) ;
109+
110+ if ( _resourceDefinition != null )
111+ {
112+ var defaultSortOrder = _resourceDefinition . DefaultSort ( ) ;
113+ if ( defaultSortOrder != null && defaultSortOrder . Count > 0 )
114+ {
115+ foreach ( var sortProp in defaultSortOrder )
116+ {
117+ // this is dumb...add an overload, don't allocate for no reason
118+ entities . Sort ( new SortQuery ( sortProp . Item2 , sortProp . Item1 ) ) ;
119+ }
120+ }
121+ }
122+
123+ return entities ;
92124 }
93125
94126 /// <inheritdoc />
0 commit comments