Lines 100.00% 8 / 8
Functions and Methods 100.00% 2 / 2
Classes and Traits 100.00% 1 / 1
Name Lines Functions and Methods CRAP Classes and Traits
DsnStoreBackendOpener 100.00% 8 / 8 100.00% 2 / 2 3 100.00% 1 / 1
 __construct 100.00% 1 / 1 100.00% 1 / 1 1
 openForBootstrap 100.00% 7 / 7 100.00% 1 / 1 2
1<?php
2
3declare(strict_types=1);
4
5namespace Stewart\Runtime\Worker;
6
7use Stewart\Runtime\Ipc\Message\Bootstrap;
8use Stewart\Store\GuardedStoreBackend;
9use Stewart\Store\StoreBackendConnector;
10use Stewart\Store\StoreDsn;
11use Stewart\Store\StoreTiming;
12
13final readonly class DsnStoreBackendOpener implements StoreBackendOpener
14{
15    public function __construct(private StoreBackendConnector $storeBackendConnector) {}
16
17    public function openForBootstrap(Bootstrap $bootstrap): ?GuardedStoreBackend
18    {
19        $storeSettings = $bootstrap->store;
20
21        if ($storeSettings === null) {
22            return null;
23        }
24
25        return $this->storeBackendConnector->connectToBackend(
26            StoreDsn::parse($storeSettings->dsn),
27            new StoreTiming($storeSettings->timeout, $storeSettings->recoveryInterval),
28        );
29    }
30}