@@ -65,9 +65,9 @@ public DefaultEntityRepository(
65
65
66
66
/// <inheritdoc />
67
67
public virtual IQueryable < TEntity > Get ( ) => _dbSet ;
68
-
68
+
69
69
/// <inheritdoc />
70
- public virtual IQueryable < TEntity > Select ( IQueryable < TEntity > entities , List < string > fields )
70
+ public virtual IQueryable < TEntity > Select ( IQueryable < TEntity > entities , List < AttrAttribute > fields )
71
71
{
72
72
if ( fields ? . Count > 0 )
73
73
return entities . Select ( fields ) ;
@@ -76,51 +76,36 @@ public virtual IQueryable<TEntity> Select(IQueryable<TEntity> entities, List<str
76
76
}
77
77
78
78
/// <inheritdoc />
79
- public virtual IQueryable < TEntity > Filter ( IQueryable < TEntity > entities , FilterQuery filterQuery )
79
+ public virtual IQueryable < TEntity > Filter ( IQueryable < TEntity > entities , FilterQueryContext filterQueryContext )
80
80
{
81
- if ( _resourceDefinition != null )
82
- {
81
+ if ( filterQueryContext . IsCustom )
82
+ { // todo: consider to move this business logic to service layer
83
+ var filterQuery = filterQueryContext . Query ;
83
84
var defaultQueryFilters = _resourceDefinition . GetQueryFilters ( ) ;
84
- if ( defaultQueryFilters != null && defaultQueryFilters . TryGetValue ( filterQuery . Attribute , out var defaultQueryFilter ) == true )
85
- {
85
+ if ( defaultQueryFilters != null && defaultQueryFilters . TryGetValue ( filterQuery . Target , out var defaultQueryFilter ) == true )
86
86
return defaultQueryFilter ( entities , filterQuery ) ;
87
- }
87
+
88
88
}
89
- return entities . Filter ( new AttrFilterQuery ( _currentRequest . GetRequestResource ( ) , _resourceGraph , filterQuery ) ) ;
89
+ return entities . Filter ( filterQueryContext ) ;
90
90
}
91
91
92
92
/// <inheritdoc />
93
- public virtual IQueryable < TEntity > Sort ( IQueryable < TEntity > entities , List < SortQuery > sortQueries )
93
+ public virtual IQueryable < TEntity > Sort ( IQueryable < TEntity > entities , SortQueryContext sortQueryContext )
94
94
{
95
- if ( sortQueries != null && sortQueries . Count > 0 )
96
- return entities . Sort ( _currentRequest . GetRequestResource ( ) , _resourceGraph , sortQueries ) ;
97
-
98
- if ( _resourceDefinition != null )
99
- {
100
- var defaultSortOrder = _resourceDefinition . DefaultSort ( ) ;
101
- if ( defaultSortOrder != null && defaultSortOrder . Count > 0 )
102
- {
103
- foreach ( var sortProp in defaultSortOrder )
104
- {
105
- // this is dumb...add an overload, don't allocate for no reason
106
- entities . Sort ( _currentRequest . GetRequestResource ( ) , _resourceGraph , new SortQuery ( sortProp . Item2 , sortProp . Item1 . PublicAttributeName ) ) ;
107
- }
108
- }
109
- }
110
- return entities ;
95
+ return entities . Sort ( sortQueryContext ) ;
111
96
}
112
97
113
98
/// <inheritdoc />
114
- public virtual async Task < TEntity > GetAsync ( TId id )
99
+ public virtual async Task < TEntity > GetAsync ( TId id , List < AttrAttribute > fields = null )
115
100
{
116
- return await Select ( Get ( ) , _currentRequest . QuerySet ? . Fields ) . SingleOrDefaultAsync ( e => e . Id . Equals ( id ) ) ;
101
+ return await Select ( Get ( ) , fields ) . SingleOrDefaultAsync ( e => e . Id . Equals ( id ) ) ;
117
102
}
118
103
119
104
/// <inheritdoc />
120
- public virtual async Task < TEntity > GetAndIncludeAsync ( TId id , RelationshipAttribute relationship )
105
+ public virtual async Task < TEntity > GetAndIncludeAsync ( TId id , RelationshipAttribute relationship , List < AttrAttribute > fields = null )
121
106
{
122
107
_logger ? . LogDebug ( $ "[JADN] GetAndIncludeAsync({ id } , { relationship . PublicRelationshipName } )") ;
123
- var includedSet = Include ( Select ( Get ( ) , _currentRequest . QuerySet ? . Fields ) , relationship ) ;
108
+ var includedSet = Include ( Select ( Get ( ) , fields ) , relationship ) ;
124
109
var result = await includedSet . SingleOrDefaultAsync ( e => e . Id . Equals ( id ) ) ;
125
110
return result ;
126
111
}
@@ -224,12 +209,6 @@ public void DetachRelationshipPointers(TEntity entity)
224
209
}
225
210
}
226
211
227
- [ Obsolete ( "Use overload UpdateAsync(TEntity updatedEntity): providing parameter ID does no longer add anything relevant" ) ]
228
- public virtual async Task < TEntity > UpdateAsync ( TId id , TEntity updatedEntity )
229
- {
230
- return await UpdateAsync ( updatedEntity ) ;
231
- }
232
-
233
212
/// <inheritdoc />
234
213
public virtual async Task < TEntity > UpdateAsync ( TEntity updatedEntity )
235
214
{
0 commit comments