1010using System . Threading . Tasks ;
1111using JsonApiDotNetCore . Internal . Contracts ;
1212using JsonApiDotNetCore . Query ;
13+ using JsonApiDotNetCore . Extensions ;
1314
1415namespace JsonApiDotNetCore . Services
1516{
@@ -34,29 +35,26 @@ public class DefaultResourceService<TResource, TId> :
3435 private readonly ResourceContext _currentRequestResource ;
3536
3637 public DefaultResourceService (
37- ISortService sortService ,
38- IFilterService filterService ,
38+ IEnumerable < IQueryParameterService > queryParameters ,
3939 IJsonApiOptions options ,
40- IIncludeService includeService ,
41- ISparseFieldsService sparseFieldsService ,
42- IPageService pageManager ,
4340 IResourceRepository < TResource , TId > repository ,
4441 IResourceContextProvider provider ,
4542 IResourceHookExecutor hookExecutor = null ,
4643 ILoggerFactory loggerFactory = null )
4744 {
48- _includeService = includeService ;
49- _sparseFieldsService = sparseFieldsService ;
50- _pageManager = pageManager ;
45+ _includeService = queryParameters . FirstOrDefault < IIncludeService > ( ) ;
46+ _sparseFieldsService = queryParameters . FirstOrDefault < ISparseFieldsService > ( ) ;
47+ _pageManager = queryParameters . FirstOrDefault < IPageService > ( ) ;
48+ _sortService = queryParameters . FirstOrDefault < ISortService > ( ) ;
49+ _filterService = queryParameters . FirstOrDefault < IFilterService > ( ) ;
5150 _options = options ;
52- _sortService = sortService ;
53- _filterService = filterService ;
5451 _repository = repository ;
5552 _hookExecutor = hookExecutor ;
5653 _logger = loggerFactory ? . CreateLogger < DefaultResourceService < TResource , TId > > ( ) ;
5754 _currentRequestResource = provider . GetResourceContext < TResource > ( ) ;
5855 }
5956
57+
6058 public virtual async Task < TResource > CreateAsync ( TResource entity )
6159 {
6260 entity = IsNull ( _hookExecutor ) ? entity : _hookExecutor . BeforeCreate ( AsList ( entity ) , ResourcePipeline . Post ) . SingleOrDefault ( ) ;
@@ -323,12 +321,12 @@ public class DefaultResourceService<TResource> : DefaultResourceService<TResourc
323321 IResourceService < TResource >
324322 where TResource : class , IIdentifiable < int >
325323 {
326- public DefaultResourceService ( ISortService sortService , IFilterService filterService , IResourceRepository < TResource , int > repository ,
327- IJsonApiOptions options , IIncludeService includeService , ISparseFieldsService sparseFieldsService ,
328- IPageService pageManager , IResourceContextProvider provider ,
329- IResourceHookExecutor hookExecutor = null , ILoggerFactory loggerFactory = null )
330- : base ( sortService , filterService , options , includeService , sparseFieldsService , pageManager , repository , provider , hookExecutor , loggerFactory )
331- {
332- }
324+ public DefaultResourceService ( IEnumerable < IQueryParameterService > queryParameters ,
325+ IJsonApiOptions options ,
326+ IResourceRepository < TResource , int > repository ,
327+ IResourceContextProvider provider ,
328+ IResourceHookExecutor hookExecutor = null ,
329+ ILoggerFactory loggerFactory = null )
330+ : base ( queryParameters , options , repository , provider , hookExecutor , loggerFactory ) { }
333331 }
334332}
0 commit comments