57
57
use ApiPlatform \Hydra \Serializer \HydraPrefixNameConverter ;
58
58
use ApiPlatform \Hydra \Serializer \PartialCollectionViewNormalizer as HydraPartialCollectionViewNormalizer ;
59
59
use ApiPlatform \Hydra \State \HydraLinkProcessor ;
60
+ use ApiPlatform \JsonApi \Filter \SparseFieldset ;
61
+ use ApiPlatform \JsonApi \Filter \SparseFieldsetParameterProvider ;
60
62
use ApiPlatform \JsonApi \JsonSchema \SchemaFactory as JsonApiSchemaFactory ;
61
63
use ApiPlatform \JsonApi \Serializer \CollectionNormalizer as JsonApiCollectionNormalizer ;
62
64
use ApiPlatform \JsonApi \Serializer \EntrypointNormalizer as JsonApiEntrypointNormalizer ;
85
87
use ApiPlatform \Laravel \Eloquent \Filter \DateFilter ;
86
88
use ApiPlatform \Laravel \Eloquent \Filter \EqualsFilter ;
87
89
use ApiPlatform \Laravel \Eloquent \Filter \FilterInterface as EloquentFilterInterface ;
90
+ use ApiPlatform \Laravel \Eloquent \Filter \JsonApi \SortFilter ;
91
+ use ApiPlatform \Laravel \Eloquent \Filter \JsonApi \SortFilterParameterProvider ;
88
92
use ApiPlatform \Laravel \Eloquent \Filter \OrderFilter ;
89
93
use ApiPlatform \Laravel \Eloquent \Filter \PartialSearchFilter ;
90
94
use ApiPlatform \Laravel \Eloquent \Filter \RangeFilter ;
107
111
use ApiPlatform \Laravel \Exception \ErrorHandler ;
108
112
use ApiPlatform \Laravel \GraphQl \Controller \EntrypointController as GraphQlEntrypointController ;
109
113
use ApiPlatform \Laravel \GraphQl \Controller \GraphiQlController ;
114
+ use ApiPlatform \Laravel \JsonApi \State \JsonApiProvider ;
110
115
use ApiPlatform \Laravel \Metadata \CachePropertyMetadataFactory ;
111
116
use ApiPlatform \Laravel \Metadata \CachePropertyNameCollectionMetadataFactory ;
112
117
use ApiPlatform \Laravel \Metadata \CacheResourceCollectionMetadataFactory ;
@@ -423,7 +428,15 @@ public function register(): void
423
428
424
429
$ this ->app ->bind (OperationMetadataFactoryInterface::class, OperationMetadataFactory::class);
425
430
426
- $ this ->app ->tag ([BooleanFilter::class, EqualsFilter::class, PartialSearchFilter::class, DateFilter::class, OrderFilter::class, RangeFilter::class], EloquentFilterInterface::class);
431
+ $ this ->app ->tag ([
432
+ EqualsFilter::class,
433
+ PartialSearchFilter::class,
434
+ DateFilter::class,
435
+ OrderFilter::class,
436
+ RangeFilter::class,
437
+ SortFilter::class,
438
+ SparseFieldset::class,
439
+ ], EloquentFilterInterface::class);
427
440
428
441
$ this ->app ->bind (FilterQueryExtension::class, function (Application $ app ) {
429
442
$ tagged = iterator_to_array ($ app ->tagged (EloquentFilterInterface::class));
@@ -470,6 +483,12 @@ public function register(): void
470
483
return new DeserializeProvider ($ app ->make (ValidateProvider::class), $ app ->make (SerializerInterface::class), $ app ->make (SerializerContextBuilderInterface::class));
471
484
});
472
485
486
+ if (class_exists (JsonApiProvider::class)) {
487
+ $ this ->app ->extend (DeserializeProvider::class, function (ProviderInterface $ inner , Application $ app ) {
488
+ return new JsonApiProvider ($ inner );
489
+ });
490
+ }
491
+
473
492
$ this ->app ->tag ([PropertyFilter::class], SerializerFilterInterface::class);
474
493
475
494
$ this ->app ->singleton (SerializerFilterParameterProvider::class, function (Application $ app ) {
@@ -479,7 +498,10 @@ public function register(): void
479
498
});
480
499
$ this ->app ->alias (SerializerFilterParameterProvider::class, 'api_platform.serializer.filter_parameter_provider ' );
481
500
482
- $ this ->app ->tag ([SerializerFilterParameterProvider::class], ParameterProviderInterface::class);
501
+ $ this ->app ->singleton (SortFilterParameterProvider::class, function (Application $ app ) {
502
+ return new SortFilterParameterProvider ();
503
+ });
504
+ $ this ->app ->tag ([SerializerFilterParameterProvider::class, SortFilterParameterProvider::class, SparseFieldsetParameterProvider::class], ParameterProviderInterface::class);
483
505
484
506
$ this ->app ->singleton ('filters ' , function (Application $ app ) {
485
507
return new ServiceLocator (array_merge (
0 commit comments