Test Failed
Push — master ( f0cc3f...73392d )
by Hirofumi
02:22
created

DoctrineJobStore   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 79
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Test Coverage

Coverage 70%

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 7
dl 0
loc 79
ccs 21
cts 30
cp 0.7
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 1
A append() 0 13 1
A storedJobsSince() 0 12 2
A storedJobOfId() 0 7 1
A storedJobsOfIds() 0 9 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\Application\Messaging\JobFlightManager;
9
use Shippinno\Job\Domain\Model\Job;
10
use Shippinno\Job\Domain\Model\JobSerializer;
11
use Shippinno\Job\Domain\Model\JobStore;
12
use Shippinno\Job\Domain\Model\StoredJob;
13
14
class DoctrineJobStore extends EntityRepository implements JobStore
15
{
16
    /**
17
     * @var JobSerializer
18
     */
19
    private $jobSerializer;
20
21
    /**
22
     * @param EntityManager $em
23
     * @param ClassMetadata $class
24
     * @param JobSerializer $jobSerializer
25
     */
26 2
    public function __construct(
27
        EntityManager $em,
28
        ClassMetadata $class,
29
        JobSerializer $jobSerializer
30
    ) {
31 2
        parent::__construct($em, $class);
32 2
        $this->jobSerializer = $jobSerializer;
33 2
    }
34
35
    /**
36
     * {@inheritdoc}
37
     */
38 2
    public function append(Job $job): StoredJob
39
    {
40 2
        $storedJob = new StoredJob(
41 2
            get_class($job),
42 2
            $this->jobSerializer->serialize($job),
43 2
            $job->createdAt(),
44 2
            $job->isExpendable(),
45 2
            $job->fifoGroupId()
46
        );
47 2
        $this->getEntityManager()->persist($storedJob);
48
49 2
        return $storedJob;
50
    }
51
52
    /**
53
     * {@inheritdoc}
54
     */
55 2
    public function storedJobsSince(?int $jobId): array
56
    {
57 2
        $query = $this->createQueryBuilder('j');
58 2
        if (null !== $jobId) {
59 1
            $query->where('j.id > :id');
60 1
            $query->setParameters(['id' => $jobId]);
61
        }
62 2
        $query->setMaxResults(100);
63 2
        $query->orderBy('j.id');
64
65 2
        return $query->getQuery()->getResult();
66
    }
67
68
    /**
69
     * {@inheritdoc}
70
     */
71
    public function storedJobOfId(int $jobId): ?StoredJob
72
    {
73
        /** @var StoredJob|null $storedJob */
74
        $storedJob = $this->find($jobId);
75
76
        return $storedJob;
77
    }
78
79
    /**
80
     * @param int[] $jobIds
81
     * @return StoredJob[]
82
     */
83
    public function storedJobsOfIds(array $jobIds): array
84
    {
85
        $query = $this->createQueryBuilder('j');
86
        $query->where('j.id in :ids');
87
        $query->setParameter('ids', $jobIds);
88
        $query->orderBy('j.id');
89
90
        return $query->getQuery()->getResult();
91
    }
92
}
93