Passed
Push — master ( 7da4f0...e73242 )
by Hirofumi
04:58
created

DoctrineJobStore::append()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 9
ccs 7
cts 7
cp 1
rs 9.6666
c 0
b 0
f 0
cc 1
eloc 6
nc 1
nop 1
crap 1
1
<?php
2
3
namespace Shippinno\Job\Infrastructure\Domain\Model;
4
5
use Doctrine\ORM\EntityRepository;
6
use Doctrine\ORM\Mapping\ClassMetadata;
7
use JMS\Serializer\SerializerBuilder;
8
use Shippinno\Job\Domain\Model\Job;
9
use Shippinno\Job\Domain\Model\JobStore;
10
use Shippinno\Job\Domain\Model\StoredJob;
11
use Shippinno\Job\Infrastructure\Serialization\JMS\BuildsSerializer;
12
13
class DoctrineJobStore extends EntityRepository implements JobStore
14
{
15
    use BuildsSerializer;
16
17
    /**
18
     * @param $em
19
     * @param ClassMetadata $class
20
     * @param SerializerBuilder $serializerBuilder
21
     */
22 3
    public function __construct($em, ClassMetadata $class, SerializerBuilder $serializerBuilder)
23
    {
24 3
        parent::__construct($em, $class);
25 3
        $this->buildSerializer($serializerBuilder);
26 3
    }
27
28
    /**
29
     * {@inheritdoc}
30
     */
31 2
    public function append(Job $job): void
32
    {
33 2
        $storedEvent = new StoredJob(
34 2
            get_class($job),
35 2
            $this->serializer->serialize($job, 'json'),
36 2
            $job->createdAt()
37
        );
38 2
        $this->getEntityManager()->persist($storedEvent);
39 2
    }
40
41
    /**
42
     * {@inheritdoc}
43
     */
44 2
    public function storedJobsSince(?int $jobId): array
45
    {
46 2
        $query = $this->createQueryBuilder('j');
47 2
        if (null !== $jobId) {
48 1
            $query->where('j.id > :id');
49 1
            $query->setParameters(['id' => $jobId]);
50
        }
51 2
        $query->orderBy('j.id');
52
53 2
        return $query->getQuery()->getResult();
54
    }
55
}
56