Lines 100.00% 12 / 12
Methods 100.00% 2 / 2
Classes 100.00% 1 / 1
Name Lines Methods CRAP
 __construct 100.00% 1 / 1 100.00% 1 / 1 1
 applyPausedAppIds 100.00% 11 / 11 100.00% 1 / 1 5
10final readonly class PausedAppsSync
11{
12    public function __construct(
13        private AppLifecycle $apps,
14        private AppResources $resources,
15        private ScopeLifecycle $scopes,
16        private WorkerLogger $logger,
17    ) {}
18
19    public function applyPausedAppIds(AppIdCollection $pausedAppIds): void
20    {
21        foreach ($this->apps->listSlots() as $slot) {
22            $scope = $slot->scope();
23            $scopeState = $this->scopes->findOrCreateStateOf($scope);
24
25            if ($scopeState->isClosed()) {
26                continue;
27            }
28
29            $shouldPause = $pausedAppIds->containsId($slot->id());
30
31            if ($shouldPause === $scopeState->isPaused()) {
32                continue;
33            }
34
35            if ($shouldPause) {
36                $this->resources->pauseScope($scope);
37                $this->logger->forScope($scope)->info('App paused');
38            } else {
39                $this->resources->resumeScope($scope);
40                $this->logger->forScope($scope)->info('App resumed');
41            }
42        }
43    }
44}