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

DoctrineJobStore::storedJobOfId()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 7
ccs 0
cts 3
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 2
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