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

Query   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
dl 0
loc 31
rs 10
c 2
b 0
f 0
wmc 9

7 Methods

Rating   Name   Duplication   Size   Complexity  
A byModality() 0 3 1
A getFields() 0 2 1
A __len__() 0 4 2
A __iter__() 0 4 2
A byUser() 0 3 1
A byProject() 0 3 1
A __init__() 0 4 1
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