Completed
Pull Request — master (#143)
by Jasper
01:20
created

Query.__len__()   A

Complexity

Conditions 2

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
from collections import namedtuple
2
QueryField = namedtuple('QueryField', ['name', 'value'])
3
4
class Query(object):
5
6
    def __init__(self, dependencies):
7
        self.fields = []
8
        self.repository = dependencies.getRepository()
9
        self.cachedResults = None
10
11
    def __iter__(self):
12
        if self.cachedResults is None:
13
            self.cachedResults = self.repository.inquire(self)
14
        return self.cachedResults.__iter__()
15
16
    def __len__(self):
17
        if self.cachedResults is None:
18
            self.cachedResults = self.repository.inquire(self)
19
        return len(self.cachedResults)
20
21
    def getFields(self):
22
        return self.fields
23
24
    def byModality(self, val):
25
        self.fields.append(QueryField('modality', val))
26
        return self
27
28
    def byProject(self, val):
29
        self.fields.append(QueryField('project', val))
30
        return self
31
32
    def byUser(self, val):
33
        self.fields.append(QueryField('user', val))
34
        return self
35