@@ -21,15 +21,17 @@ public class DefaultEntityRepository<TEntity>
21
21
{
22
22
public DefaultEntityRepository (
23
23
IJsonApiContext jsonApiContext ,
24
- IDbContextResolver contextResolver )
25
- : base ( jsonApiContext , contextResolver )
24
+ IDbContextResolver contextResolver ,
25
+ ResourceDefinition < TEntity > resourceDefinition = null )
26
+ : base ( jsonApiContext , contextResolver , resourceDefinition )
26
27
{ }
27
28
28
29
public DefaultEntityRepository (
29
30
ILoggerFactory loggerFactory ,
30
31
IJsonApiContext jsonApiContext ,
31
- IDbContextResolver contextResolver )
32
- : base ( loggerFactory , jsonApiContext , contextResolver )
32
+ IDbContextResolver contextResolver ,
33
+ ResourceDefinition < TEntity > resourceDefinition = null )
34
+ : base ( loggerFactory , jsonApiContext , contextResolver , resourceDefinition )
33
35
{ }
34
36
}
35
37
@@ -47,27 +49,32 @@ public class DefaultEntityRepository<TEntity, TId>
47
49
private readonly ILogger _logger ;
48
50
private readonly IJsonApiContext _jsonApiContext ;
49
51
private readonly IGenericProcessorFactory _genericProcessorFactory ;
52
+ private readonly ResourceDefinition < TEntity > _resourceDefinition ;
50
53
51
54
public DefaultEntityRepository (
52
55
IJsonApiContext jsonApiContext ,
53
- IDbContextResolver contextResolver )
56
+ IDbContextResolver contextResolver ,
57
+ ResourceDefinition < TEntity > resourceDefinition = null )
54
58
{
55
59
_context = contextResolver . GetContext ( ) ;
56
60
_dbSet = contextResolver . GetDbSet < TEntity > ( ) ;
57
61
_jsonApiContext = jsonApiContext ;
58
62
_genericProcessorFactory = _jsonApiContext . GenericProcessorFactory ;
63
+ _resourceDefinition = resourceDefinition ;
59
64
}
60
65
61
66
public DefaultEntityRepository (
62
67
ILoggerFactory loggerFactory ,
63
68
IJsonApiContext jsonApiContext ,
64
- IDbContextResolver contextResolver )
69
+ IDbContextResolver contextResolver ,
70
+ ResourceDefinition < TEntity > resourceDefinition = null )
65
71
{
66
72
_context = contextResolver . GetContext ( ) ;
67
73
_dbSet = contextResolver . GetDbSet < TEntity > ( ) ;
68
74
_jsonApiContext = jsonApiContext ;
69
75
_logger = loggerFactory . CreateLogger < DefaultEntityRepository < TEntity , TId > > ( ) ;
70
76
_genericProcessorFactory = _jsonApiContext . GenericProcessorFactory ;
77
+ _resourceDefinition = resourceDefinition ;
71
78
}
72
79
73
80
/// <inheritdoc />
@@ -82,13 +89,38 @@ public virtual IQueryable<TEntity> Get()
82
89
/// <inheritdoc />
83
90
public virtual IQueryable < TEntity > Filter ( IQueryable < TEntity > entities , FilterQuery filterQuery )
84
91
{
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
+
85
101
return entities . Filter ( _jsonApiContext , filterQuery ) ;
86
102
}
87
103
88
104
/// <inheritdoc />
89
105
public virtual IQueryable < TEntity > Sort ( IQueryable < TEntity > entities , List < SortQuery > sortQueries )
90
106
{
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 ;
92
124
}
93
125
94
126
/// <inheritdoc />
0 commit comments