Completed
Push — master ( c1148b...9ab19a )
by Emil
02:13
created

QueuedTaskRepository::findQueued()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 13
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 8
nc 1
nop 1
1
<?php
2
3
namespace Glooby\TaskBundle\Entity;
4
5
use Doctrine\ORM\EntityRepository;
6
use Glooby\TaskBundle\Model\QueuedTaskInterface;
7
8
/**
9
 * @author Emil Kilhage
10
 */
11
class QueuedTaskRepository extends EntityRepository
12
{
13
    /**
14
     * @param string $name
15
     * @param \DateTime $executeAt
16
     * @return QueuedTaskInterface
17
     */
18
    public function getByNameAndExecuteAt($name, \DateTime $executeAt)
19
    {
20
        return $this->getEntityManager()
21
            ->createQuery('SELECT r
22
              FROM GloobyTaskBundle:QueuedTask r
23
              WHERE r.name = :name AND r.executeAt = :executeAt')
24
            ->setParameter('name', $name)
25
            ->setParameter('executeAt', $executeAt)
26
            ->useQueryCache(true)
27
            ->getSingleResult();
28
    }
29
30
    /**
31
     * @param string $name
32
     * @return QueuedTaskInterface
33
     */
34
    public function getByNameAndExecuteAtBeforeNow($name)
35
    {
36
        return $this->getEntityManager()
37
            ->createQuery('SELECT r
38
              FROM GloobyTaskBundle:QueuedTask r
39
              WHERE r.name = :name AND r.executeAt <= :now')
40
            ->setParameter('name', $name)
41
            ->setParameter('now', new \DateTime())
42
            ->useQueryCache(true)
43
            ->setMaxResults(1)
44
            ->getSingleResult();
45
    }
46
47
    /**
48
     * @param int $limit
49
     * @return QueuedTaskInterface[]
50
     */
51
    public function findQueued($limit)
52
    {
53
        return $this->getEntityManager()
54
            ->createQuery('SELECT r
55
              FROM GloobyTaskBundle:QueuedTask r
56
              WHERE r.status = :status AND r.executeAt <= :now
57
              ORDER BY r.executeAt ASC')
58
            ->setParameter('status', QueuedTaskInterface::STATUS_QUEUED)
59
            ->setParameter('now', new \DateTime())
60
            ->setMaxResults($limit)
61
            ->useQueryCache(true)
62
            ->getResult();
63
    }
64
}
65