Lines 50.00% 1 / 2
Functions and Methods 50.00% 1 / 2
Classes and Traits 0.00% 0 / 1
Name Lines Functions and Methods CRAP Classes and Traits
RegisteredSubscription 50.00% 1 / 2 50.00% 1 / 2 2.50 0.00% 0 / 1
 __construct 100.00% 1 / 1 100.00% 1 / 1 1
 describeMatch 0.00% 0 / 1 0.00% 0 / 1 2
1<?php
2
3declare(strict_types=1);
4
5namespace Stewart\Runtime\Dispatch;
6
7use Closure;
8use Stewart\Contracts\Registry\EntityFilter;
9use Stewart\Contracts\Selector\Selector;
10use Stewart\Runtime\Model\ResourceScope;
11use Stewart\Runtime\Model\SubscriptionId;
12use Stewart\Runtime\Model\SubscriptionKind;
13use Stewart\Support\Stream\SubscriptionScope;
14use Stewart\Support\Wire\TriggerSpec;
15
16final readonly class RegisteredSubscription
17{
18    public function __construct(
19        public SubscriptionId $id,
20        public ResourceScope $scope,
21        public SubscriptionKind $kind,
22        public Selector $selector,
23        public SubscriptionScope $subscriptionScope,
24        public Closure $handler,
25        public ?TriggerSpec $trigger = null,
26        public ?EntityFilter $entityFilter = null,
27    ) {}
28
29    public function describeMatch(): string
30    {
31        return $this->entityFilter?->toCanonicalKey() ?? $this->selector->toCanonicalKey();
32    }
33}