Skip to content
This repository has been archived by the owner on Dec 6, 2018. It is now read-only.

Commit

Permalink
fix legacy ordering bug by updating ltgt, and using ltgt more directly
Browse files Browse the repository at this point in the history
  • Loading branch information
dominictarr committed Sep 10, 2015
1 parent 539408a commit e23ebee
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 24 deletions.
6 changes: 2 additions & 4 deletions nut.js
Expand Up @@ -159,17 +159,15 @@ module.exports = function (db, precodec, codec, compare) {
},
iterator: function (_opts, cb) {
var opts = clone(_opts || {})
var prefix = opts.prefix || []
var prefix = _opts.prefix || []

function encodeKey(key) {
return encodePrefix(prefix, key, opts, {})
}

ltgt.toLtgt(opts, opts, encodeKey, precodec.lowerBound, precodec.upperBound)
ltgt.toLtgt(_opts, opts, encodeKey, precodec.lowerBound, precodec.upperBound)

// if these legacy values are in the options, remove them
delete opts.start
delete opts.end

opts.prefix = null

Expand Down
4 changes: 2 additions & 2 deletions package.json
Expand Up @@ -9,7 +9,7 @@
},
"dependencies": {
"pull-stream": "~2.21.0",
"ltgt": "~2.0.0",
"ltgt": "~2.1.1",
"levelup": "~0.19.0",
"xtend": "~4.0.0",
"bytewise": "~0.7.1",
Expand Down Expand Up @@ -49,4 +49,4 @@
"android-browser/4.2..latest"
]
}
}
}
24 changes: 6 additions & 18 deletions range.js
Expand Up @@ -63,30 +63,18 @@ exports = module.exports = function (range, key, _compare) {
//then check the last item starts with
if(isArrayLike(range)) return prefix(range, key)

// return ltgt.contains(range, key, compare)

if(range.lt && _compare(key, range.lt) >= 0) return false
if(range.lte && _compare(key, range.lte) > 0) return false
if(range.gt && _compare(key, range.gt) <= 0) return false
if(range.gte && _compare(key, range.gte) < 0) return false

return true
return ltgt.contains(range, key, compare)
}

function addPrefix(prefix, range) {
var r = {}
if(has(range, 'lt')) r.lt = [prefix, range.lt]
if(has(range, 'gt')) r.gt = [prefix, range.gt]
if(has(range, 'lte')) r.lte = [prefix, range.lte]
if(has(range, 'gte')) r.gte = [prefix, range.gte]
if(has(range, 'min')) r.gte = [prefix, range.min]
if(has(range, 'max')) r.lte = [prefix, range.max]
r.reverse = !!range.reverse
var o = ltgt.toLtgt(range, null, function (key) {
return [prefix, key]
})

//if there where no ranges, then then just use a prefix.
if(!r.gte &&!r.lte) return [prefix]
if(!has(o, 'gte') && !has(o, 'lte')) return [prefix]

return r
return o
}

exports.compare = compare
Expand Down

0 comments on commit e23ebee

Please sign in to comment.