| Conditions | 6 |
| Total Lines | 22 |
| Code Lines | 17 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
| 1 | from .query import Query |
||
| 41 | def __next__(self): |
||
| 42 | """ |
||
| 43 | Returns: |
||
| 44 | |||
| 45 | """ |
||
| 46 | # FIXME: This should be a local value with a find to ensure we get an accurate count |
||
| 47 | limit = self.collection.count() - self.offset |
||
| 48 | pages = limit // self.size |
||
| 49 | if self.current > pages: |
||
| 50 | raise StopIteration |
||
| 51 | page = self.collection |
||
| 52 | page = page.find() if not self.find else page.find(self.find) |
||
| 53 | if self.sort: |
||
| 54 | key, value = self.sort |
||
| 55 | page = page.sort(key, value) |
||
| 56 | page = page.limit(self.size) |
||
| 57 | if self.current > 0: |
||
| 58 | page = page.skip(self.offset + (self.current * self.size)) |
||
| 59 | elif self.offset > 0: |
||
| 60 | page = page.skip(self.offset) |
||
| 61 | self.current += 1 |
||
| 62 | return [self.objectify(document) for document in page] |
||
| 63 |