SourceRepository   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 168
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 11
lcom 1
cbo 3
dl 0
loc 168
ccs 0
cts 42
cp 0
rs 10
c 0
b 0
f 0

11 Methods

Rating   Name   Duplication   Size   Complexity  
A countByFeed() 0 7 1
A countByScraper() 0 7 1
A findByFeedAndUnvisitedSince() 0 4 1
A countByFeedAndUnvisitedSince() 0 7 1
A findByScraperAndUnvisitedSince() 0 4 1
A countByScraperAndUnvisitedSince() 0 7 1
A queryByFeed() 0 7 1
A queryByScraper() 0 7 1
A queryByFeedAndUnvisitedSince() 0 8 1
A queryByScraperAndUnvisitedSince() 0 8 1
A queryOrphaned() 0 8 1
1
<?php
2
3
namespace TreeHouse\IoBundle\Entity;
4
5
use Doctrine\ORM\EntityRepository;
6
use Doctrine\ORM\QueryBuilder;
7
use TreeHouse\IoBundle\Model\SourceInterface;
8
9
class SourceRepository extends EntityRepository
10
{
11
    /**
12
     * Queries number of sources for a feed.
13
     *
14
     * @param Feed $feed
15
     *
16
     * @return QueryBuilder
17
     */
18
    public function queryByFeed(Feed $feed)
19
    {
20
        return $this->createQueryBuilder('s')
21
            ->where('s.feed = :feed')
22
            ->setParameter('feed', $feed)
23
        ;
24
    }
25
26
    /**
27
     * Counts number of sources for a feed.
28
     *
29
     * @param Feed $feed
30
     *
31
     * @return int
32
     */
33
    public function countByFeed(Feed $feed)
34
    {
35
        $builder = $this->queryByFeed($feed);
36
        $builder->select('COUNT(s)');
37
38
        return $builder->getQuery()->getSingleScalarResult();
39
    }
40
41
    /**
42
     * Queries number of sources for a scraper.
43
     *
44
     * @param Scraper $scraper
45
     *
46
     * @return QueryBuilder
47
     */
48
    public function queryByScraper(Scraper $scraper)
49
    {
50
        return $this->createQueryBuilder('s')
51
            ->where('s.scraper = :scraper')
52
            ->setParameter('scraper', $scraper)
53
        ;
54
    }
55
56
    /**
57
     * Counts number of sources for a scraper.
58
     *
59
     * @param Scraper $scraper
60
     *
61
     * @return int
62
     */
63
    public function countByScraper(Scraper $scraper)
64
    {
65
        $builder = $this->queryByScraper($scraper);
66
        $builder->select('COUNT(s)');
67
68
        return $builder->getQuery()->getSingleScalarResult();
69
    }
70
71
    /**
72
     * Queries number of sources for a feed, not visited since a given date.
73
     *
74
     * @param Feed      $feed
75
     * @param \DateTime $dateLastVisited
76
     *
77
     * @return QueryBuilder
78
     */
79
    public function queryByFeedAndUnvisitedSince(Feed $feed, \DateTime $dateLastVisited)
80
    {
81
        return $this->queryByFeed($feed)
82
            ->andWhere('s.datetimeLastVisited < :datetimeLastVisited')
83
            ->orderBy('s.datetimeLastVisited', 'ASC')
84
            ->setParameter('datetimeLastVisited', $dateLastVisited)
85
        ;
86
    }
87
88
    /**
89
     * Finds number of sources for a feed, not visited since a given date.
90
     *
91
     * @param Feed      $feed
92
     * @param \DateTime $dateLastVisited
93
     *
94
     * @return SourceInterface[]
95
     */
96
    public function findByFeedAndUnvisitedSince(Feed $feed, \DateTime $dateLastVisited)
97
    {
98
        return $this->queryByFeedAndUnvisitedSince($feed, $dateLastVisited)->getQuery()->getResult();
99
    }
100
101
    /**
102
     * Counts number of sources for a feed, not visited since a given date.
103
     *
104
     * @param Feed      $feed
105
     * @param \DateTime $dateLastVisited
106
     *
107
     * @return int
108
     */
109
    public function countByFeedAndUnvisitedSince(Feed $feed, \DateTime $dateLastVisited)
110
    {
111
        $builder = $this->queryByFeedAndUnvisitedSince($feed, $dateLastVisited);
112
        $builder->select('COUNT(s)');
113
114
        return $builder->getQuery()->getSingleScalarResult();
115
    }
116
117
    /**
118
     * Queries number of sources for a scraper, not visited since a given date.
119
     *
120
     * @param Scraper   $scraper
121
     * @param \DateTime $dateLastVisited
122
     *
123
     * @return QueryBuilder
124
     */
125
    public function queryByScraperAndUnvisitedSince(Scraper $scraper, \DateTime $dateLastVisited)
126
    {
127
        return $this->queryByScraper($scraper)
128
            ->andWhere('s.datetimeLastVisited < :datetimeLastVisited')
129
            ->orderBy('s.datetimeLastVisited', 'ASC')
130
            ->setParameter('datetimeLastVisited', $dateLastVisited)
131
        ;
132
    }
133
134
    /**
135
     * Finds number of sources for a scraper, not visited since a given date.
136
     *
137
     * @param Scraper   $scraper
138
     * @param \DateTime $dateLastVisited
139
     *
140
     * @return SourceInterface[]
141
     */
142
    public function findByScraperAndUnvisitedSince(Scraper $scraper, \DateTime $dateLastVisited)
143
    {
144
        return $this->queryByScraperAndUnvisitedSince($scraper, $dateLastVisited)->getQuery()->getResult();
145
    }
146
147
    /**
148
     * Counts number of sources for a scraper, not visited since a given date.
149
     *
150
     * @param Scraper   $scraper
151
     * @param \DateTime $dateLastVisited
152
     *
153
     * @return int
154
     */
155
    public function countByScraperAndUnvisitedSince(Scraper $scraper, \DateTime $dateLastVisited)
156
    {
157
        $builder = $this->queryByScraperAndUnvisitedSince($scraper, $dateLastVisited);
158
        $builder->select('COUNT(s)');
159
160
        return $builder->getQuery()->getSingleScalarResult();
161
    }
162
163
    /**
164
     * Returns orphaned sources, meaning those without a feed or scraper.
165
     *
166
     * @return QueryBuilder
167
     */
168
    public function queryOrphaned()
169
    {
170
        return $this
171
            ->createQueryBuilder('s')
172
            ->where('s.feed IS NULL')
173
            ->andWhere('s.scraper IS NULL')
174
        ;
175
    }
176
}
177