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 ;
84
86
use ApiPlatform \Laravel \Eloquent \Filter \DateFilter ;
85
87
use ApiPlatform \Laravel \Eloquent \Filter \EqualsFilter ;
86
88
use ApiPlatform \Laravel \Eloquent \Filter \FilterInterface as EloquentFilterInterface ;
89
+ use ApiPlatform \Laravel \Eloquent \Filter \JsonApi \SortFilter ;
90
+ use ApiPlatform \Laravel \Eloquent \Filter \JsonApi \SortFilterParameterProvider ;
87
91
use ApiPlatform \Laravel \Eloquent \Filter \OrderFilter ;
88
92
use ApiPlatform \Laravel \Eloquent \Filter \PartialSearchFilter ;
89
93
use ApiPlatform \Laravel \Eloquent \Filter \RangeFilter ;
106
110
use ApiPlatform \Laravel \Exception \ErrorHandler ;
107
111
use ApiPlatform \Laravel \GraphQl \Controller \EntrypointController as GraphQlEntrypointController ;
108
112
use ApiPlatform \Laravel \GraphQl \Controller \GraphiQlController ;
113
+ use ApiPlatform \Laravel \JsonApi \State \JsonApiProvider ;
109
114
use ApiPlatform \Laravel \Metadata \CachePropertyMetadataFactory ;
110
115
use ApiPlatform \Laravel \Metadata \CachePropertyNameCollectionMetadataFactory ;
111
116
use ApiPlatform \Laravel \Metadata \CacheResourceCollectionMetadataFactory ;
@@ -421,7 +426,15 @@ public function register(): void
421
426
422
427
$ this ->app ->bind (OperationMetadataFactoryInterface::class, OperationMetadataFactory::class);
423
428
424
- $ this ->app ->tag ([EqualsFilter::class, PartialSearchFilter::class, DateFilter::class, OrderFilter::class, RangeFilter::class], EloquentFilterInterface::class);
429
+ $ this ->app ->tag ([
430
+ EqualsFilter::class,
431
+ PartialSearchFilter::class,
432
+ DateFilter::class,
433
+ OrderFilter::class,
434
+ RangeFilter::class,
435
+ SortFilter::class,
436
+ SparseFieldset::class,
437
+ ], EloquentFilterInterface::class);
425
438
426
439
$ this ->app ->bind (FilterQueryExtension::class, function (Application $ app ) {
427
440
$ tagged = iterator_to_array ($ app ->tagged (EloquentFilterInterface::class));
@@ -468,6 +481,12 @@ public function register(): void
468
481
return new DeserializeProvider ($ app ->make (ValidateProvider::class), $ app ->make (SerializerInterface::class), $ app ->make (SerializerContextBuilderInterface::class));
469
482
});
470
483
484
+ if (class_exists (JsonApiProvider::class)) {
485
+ $ this ->app ->extend (DeserializeProvider::class, function (ProviderInterface $ inner , Application $ app ) {
486
+ return new JsonApiProvider ($ inner );
487
+ });
488
+ }
489
+
471
490
$ this ->app ->tag ([PropertyFilter::class], SerializerFilterInterface::class);
472
491
473
492
$ this ->app ->singleton (SerializerFilterParameterProvider::class, function (Application $ app ) {
@@ -477,7 +496,10 @@ public function register(): void
477
496
});
478
497
$ this ->app ->alias (SerializerFilterParameterProvider::class, 'api_platform.serializer.filter_parameter_provider ' );
479
498
480
- $ this ->app ->tag ([SerializerFilterParameterProvider::class], ParameterProviderInterface::class);
499
+ $ this ->app ->singleton (SortFilterParameterProvider::class, function (Application $ app ) {
500
+ return new SortFilterParameterProvider ();
501
+ });
502
+ $ this ->app ->tag ([SerializerFilterParameterProvider::class, SortFilterParameterProvider::class, SparseFieldsetParameterProvider::class], ParameterProviderInterface::class);
481
503
482
504
$ this ->app ->singleton ('filters ' , function (Application $ app ) {
483
505
return new ServiceLocator (array_merge (
0 commit comments