1: <?php
2:
3: declare(strict_types=1);
4:
5: namespace LaravelUi5\OData\Service\Resolver;
6:
7: use Illuminate\Database\Eloquent\Model;
8: use LaravelUi5\OData\Driver\Sql\EloquentEntitySetResolver;
9: use LaravelUi5\OData\Service\Contracts\EntitySetResolverInterface;
10: use LaravelUi5\OData\Service\Contracts\ResolverBindingInterface;
11:
12: /**
13: * Serializable binding for an Eloquent-model-backed entity set.
14: *
15: * Stores the model class-string and creates an EloquentEntitySetResolver
16: * at runtime. This is the binding type auto-registered by discoverModel().
17: */
18: final readonly class EloquentBinding implements ResolverBindingInterface
19: {
20: /**
21: * @param class-string<Model> $modelClass
22: */
23: public function __construct(public string $modelClass) {}
24:
25: public function createResolver(): EntitySetResolverInterface
26: {
27: return new EloquentEntitySetResolver($this->modelClass);
28: }
29: }
30: