fetchNextBatch fetches the next batch of encoded objects from the database.
()
| 125 | |
| 126 | // fetchNextBatch fetches the next batch of encoded objects from the database. |
| 127 | func (iter *EncodedObjectIter) fetchNextBatch() error { |
| 128 | var results []database.Object |
| 129 | result := iter.db.Where("url = ? AND type = ?", iter.namespacePrefix, iter.objectType.String()).Offset(iter.offset).Limit(iter.limit).Find(&results) |
| 130 | if result.Error != nil { |
| 131 | iter.moreData = false |
| 132 | return result.Error |
| 133 | } |
| 134 | iter.offset += len(results) |
| 135 | iter.moreData = len(results) == iter.limit |
| 136 | |
| 137 | // Convert database objects to MemoryObject |
| 138 | iter.objects = make([]*plumbing.MemoryObject, len(results)) |
| 139 | for i, dbObj := range results { |
| 140 | o := plumbing.MemoryObject{} |
| 141 | o.SetType(iter.objectType) |
| 142 | o.SetSize(dbObj.Size) |
| 143 | if _, err := o.Write(dbObj.Blob); err != nil { |
| 144 | return err |
| 145 | } |
| 146 | iter.objects[i] = &o |
| 147 | } |
| 148 | return nil |
| 149 | } |
| 150 | |
| 151 | // Next retrieves the next encoded object, advancing the iterator. |
| 152 | func (iter *EncodedObjectIter) Next() (plumbing.EncodedObject, error) { |