• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

h4kuna / critical-cache / 12220224117

08 Dec 2024 08:24AM UTC coverage: 94.706% (+0.7%) from 94.035%
12220224117

push

github

h4kuna
feat(UniqueHashQueueService): add new service for generate unique values, witch check mechanism

63 of 64 new or added lines in 4 files covered. (98.44%)

322 of 340 relevant lines covered (94.71%)

0.95 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.83
/src/Services/UniqueHashQueueService.php
1
<?php declare(strict_types=1);
2

3
namespace h4kuna\CriticalCache\Services;
4

5
use h4kuna\CriticalCache\Contracts\UniqueDataStoreServiceContract;
6
use h4kuna\CriticalCache\Contracts\UniqueValuesGeneratorServiceContract;
7
use h4kuna\CriticalCache\Interfaces\UniqueValueServiceInterface;
8
use h4kuna\CriticalCache\PSR16\CacheLocking;
9
use Psr\SimpleCache\CacheInterface;
10

11
final readonly class UniqueHashQueueService implements UniqueDataStoreServiceContract
12
{
13
        public function __construct(
1✔
14
                private CacheLocking $cache,
15
                private UniqueValuesGeneratorServiceContract $uniqueValuesGeneratorService,
16
        ) {
17
        }
1✔
18

19
        public function execute(UniqueValueServiceInterface $checkUniqueValue): string
1✔
20
        {
21
                $cacheKey = $checkUniqueValue::class;
1✔
22
                return $this->cache->synchronized($cacheKey, function (CacheInterface $cache) use (
1✔
23
                        $checkUniqueValue,
1✔
24
                        $cacheKey,
1✔
25
                ): string {
26
                        /** @var list<non-empty-string> $values */
27
                        $values = $cache->get($cacheKey) ?? [];
1✔
28
                        if ($values === []) {
1✔
29
                                $values = $this->uniqueValuesGeneratorService->execute($checkUniqueValue);
1✔
30
                        }
31

32
                        $value = array_pop($values);
1✔
33
                        $cache->set($cacheKey, $values);
1✔
34

35
                        return $value;
1✔
36
                });
1✔
37
        }
38

39
        public function count(UniqueValueServiceInterface $checkUniqueValue): int
1✔
40
        {
41
                $values = $this->cache->get($checkUniqueValue::class);
1✔
42
                if (is_array($values) === false) {
1✔
NEW
43
                        return 0;
×
44
                }
45

46
                return count($values);
1✔
47
        }
48

49
        public function saveNewBatch(UniqueValueServiceInterface $checkUniqueValue): void
1✔
50
        {
51
                $this->cache->set(
1✔
52
                        $checkUniqueValue::class,
1✔
53
                        $this->uniqueValuesGeneratorService->execute($checkUniqueValue),
1✔
54
                );
55
        }
1✔
56
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc