Lines 100.00% 2 / 2
Functions and Methods 100.00% 2 / 2
Classes and Traits 100.00% 1 / 1
Name Lines Functions and Methods CRAP Classes and Traits
AppBuildFailureCollection 100.00% 2 / 2 100.00% 2 / 2 2 100.00% 1 / 1
 keyedByAppId 100.00% 1 / 1 100.00% 1 / 1 1
 find 100.00% 1 / 1 100.00% 1 / 1 1
1<?php
2
3declare(strict_types=1);
4
5namespace Stewart\Runtime\Container\Collection;
6
7use Stewart\Contracts\App\AppId;
8use Stewart\Contracts\Collection\KeyedCollection;
9use Stewart\Runtime\Container\AppBuildFailure;
10
11/** @extends KeyedCollection<string, AppBuildFailure> */
12final readonly class AppBuildFailureCollection extends KeyedCollection
13{
14    /** @param iterable<AppBuildFailure> $failures */
15    public static function keyedByAppId(iterable $failures): self
16    {
17        return self::keyedBy($failures, static fn(AppBuildFailure $failure): string => $failure->appId->value);
18    }
19
20    public function find(AppId $id): ?AppBuildFailure
21    {
22        return $this->elementAt($id->value);
23    }
24}