@idxdb/promised
Version:
@idxdb/promised wraps the IndexedDB API. It allows you to easily store and retrieve data in an indexed db database using async/await syntax, making it easier to integrate with your existing codebase.
67 lines (66 loc) • 1.91 kB
JavaScript
import { ValueCursor } from '../component/value-cursor.js';
import { KeyCursor } from '../component/key-cursor.js';
import { requestResolver } from '../shared/request-resolver.js';
export class StoreIndex {
ctx;
constructor(ctx) {
this.ctx = ctx;
}
get keyPath() {
return this.ctx.index.keyPath;
}
get multiEntry() {
return this.ctx.index.multiEntry;
}
get name() {
return this.ctx.index.name;
}
get unique() {
return this.ctx.index.unique;
}
get objectStore() {
return this.ctx.objectStore;
}
count(query) {
const request = this.ctx.index.count(query);
return requestResolver(request);
}
get(key) {
const request = this.ctx.index.get(key);
return requestResolver(request);
}
getAll(query, count) {
const request = this.ctx.index.getAll(query, count);
return requestResolver(request);
}
getAllKeys(query, count) {
const request = this.ctx.index.getAllKeys(query, count);
return requestResolver(request);
}
getKey(key) {
const request = this.ctx.index.getKey(key);
return requestResolver(request);
}
openCursor(query, direction) {
const request = this.ctx.index.openCursor(query, direction);
return new ValueCursor({
request,
direction,
source: new StoreIndex({
index: this.ctx.index,
objectStore: this.ctx.objectStore,
}),
});
}
openKeyCursor(query, direction) {
const request = this.ctx.index.openKeyCursor(query, direction);
return new KeyCursor({
request,
direction,
source: new StoreIndex({
index: this.ctx.index,
objectStore: this.ctx.objectStore,
}),
});
}
}