Test Failed
Push — master ( 7d634a...f0cc3f )
by Hirofumi
02:27
created

DoctrineJobStore::append()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 1

Importance

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