Test Failed
Push — master ( 94c60c...7e0fa4 )
by Hirofumi
04:50
created

DoctrineJobStore   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Test Coverage

Coverage 87.5%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 7
dl 0
loc 60
ccs 21
cts 24
cp 0.875
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A append() 0 11 1
A storedJobsSince() 0 12 2
A storedJobOfId() 0 7 1
1
<?php
2
3
namespace Shippinno\Job\Infrastructure\Domain\Model;
4
5
use Doctrine\ORM\EntityManager;
6
use Doctrine\ORM\EntityRepository;
7
use Doctrine\ORM\Mapping\ClassMetadata;
8
use Shippinno\Job\Domain\Model\Job;
9
use Shippinno\Job\Domain\Model\JobSerializer;
10
use Shippinno\Job\Domain\Model\JobStore;
11
use Shippinno\Job\Domain\Model\StoredJob;
12
13
class DoctrineJobStore extends EntityRepository implements JobStore
14
{
15
    /**
16
     * @var JobSerializer
17
     */
18
    private $jobSerializer;
19
20
    /**
21
     * @param EntityManager $em
22
     * @param ClassMetadata $class
23
     * @param JobSerializer $jobSerializer
24
     */
25 2
    public function __construct(EntityManager $em, ClassMetadata $class, JobSerializer $jobSerializer)
26
    {
27 2
        parent::__construct($em, $class);
28 2
        $this->jobSerializer = $jobSerializer;
29 2
    }
30
31
    /**
32
     * {@inheritdoc}
33
     */
34 2
    public function append(Job $job): void
35
    {
36 2
        $storedJob = new StoredJob(
37 2
            get_class($job),
38 2
            $this->jobSerializer->serialize($job),
39 2
            $job->createdAt(),
40 2
            $job->isExpendable(),
41 2
            $job->fifoGroupId()
42
        );
43 2
        $this->getEntityManager()->persist($storedJob);
44 2
    }
45
46
    /**
47
     * {@inheritdoc}
48
     */
49 2
    public function storedJobsSince(?int $jobId): array
50
    {
51 2
        $query = $this->createQueryBuilder('j');
52 2
        if (null !== $jobId) {
53 1
            $query->where('j.id > :id');
54 1
            $query->setParameters(['id' => $jobId]);
55
        }
56 2
        $query->setMaxResults(100);
57 2
        $query->orderBy('j.id');
58
59 2
        return $query->getQuery()->getResult();
60
    }
61
62
    /**
63
     * {@inheritdoc}
64
     */
65
    public function storedJobOfId(int $jobId): ?StoredJob
66
    {
67
        /** @var StoredJob|null $storedJob */
68
        $storedJob = $this->find($jobId);
69
70
        return $storedJob;
71
    }
72
}
73