mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-07-27 13:57:46 +00:00
Simplify iteration in LevelDB.
This commit is contained in:
+17
-22
@@ -79,17 +79,15 @@ func (l *levelDB) Delete(key []byte) error {
|
|||||||
|
|
||||||
func (l *levelDB) KeysByPrefix(prefix []byte) [][]byte {
|
func (l *levelDB) KeysByPrefix(prefix []byte) [][]byte {
|
||||||
result := make([][]byte, 0, 20)
|
result := make([][]byte, 0, 20)
|
||||||
iterator := l.db.NewIterator(nil)
|
|
||||||
if iterator.Seek(prefix) {
|
iterator := l.db.NewIterator(nil, nil)
|
||||||
for bytes.HasPrefix(iterator.Key(), prefix) {
|
defer iterator.Release()
|
||||||
key := iterator.Key()
|
|
||||||
keyc := make([]byte, len(key))
|
for ok := iterator.Seek(prefix); ok && bytes.HasPrefix(iterator.Key(), prefix); ok = iterator.Next() {
|
||||||
copy(keyc, key)
|
key := iterator.Key()
|
||||||
result = append(result, keyc)
|
keyc := make([]byte, len(key))
|
||||||
if !iterator.Next() {
|
copy(keyc, key)
|
||||||
break
|
result = append(result, keyc)
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
@@ -98,17 +96,14 @@ func (l *levelDB) KeysByPrefix(prefix []byte) [][]byte {
|
|||||||
func (l *levelDB) FetchByPrefix(prefix []byte) [][]byte {
|
func (l *levelDB) FetchByPrefix(prefix []byte) [][]byte {
|
||||||
result := make([][]byte, 0, 20)
|
result := make([][]byte, 0, 20)
|
||||||
|
|
||||||
iterator := l.db.NewIterator(nil)
|
iterator := l.db.NewIterator(nil, nil)
|
||||||
if iterator.Seek(prefix) {
|
defer iterator.Release()
|
||||||
for bytes.HasPrefix(iterator.Key(), prefix) {
|
|
||||||
val := iterator.Value()
|
for ok := iterator.Seek(prefix); ok && bytes.HasPrefix(iterator.Key(), prefix); ok = iterator.Next() {
|
||||||
valc := make([]byte, len(val))
|
val := iterator.Value()
|
||||||
copy(valc, val)
|
valc := make([]byte, len(val))
|
||||||
result = append(result, valc)
|
copy(valc, val)
|
||||||
if !iterator.Next() {
|
result = append(result, valc)
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|||||||
Reference in New Issue
Block a user