Skip to content

Commit

Permalink
Implement has() and hasMany()
Browse files Browse the repository at this point in the history
Adds support of two methods:

```js
await db.put('love', 'u')
await db.has('love') // true
await db.hasMany(['love', 'hate']) // [true, false]
```

Ref: Level/community#142
Category: addition
  • Loading branch information
vweevers committed Jan 5, 2025
1 parent 946a57f commit 6b8fb4f
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,7 @@ class MemoryLevel extends AbstractLevel {
permanence: false,
createIfMissing: false,
errorIfExists: false,
has: true,
encodings: { [storeEncoding]: true },
signals: {
// Would have no value here because the operations are synchronous
Expand Down Expand Up @@ -313,6 +314,20 @@ class MemoryLevel extends AbstractLevel {
return keys.map(key => this[kTree].get(key))
}

async _has (key, options) {
const tree = options.snapshot != null
? options.snapshot[kTree]
: this[kTree]
return tree.get(key) !== undefined
}

async _hasMany (keys, options) {
const tree = options.snapshot != null
? options.snapshot[kTree]
: this[kTree]
return keys.map(has, tree)
}

async _del (key, options) {
this[kTree] = this[kTree].remove(key)
}
Expand Down Expand Up @@ -394,3 +409,7 @@ if (typeof process !== 'undefined' && !process.browser && typeof global !== 'und
function isRangeOption (k) {
return rangeOptions.has(k)
}

function has (key) {
return this.get(key) !== undefined
}

0 comments on commit 6b8fb4f

Please sign in to comment.