@creasource/reactive-idb
Version:
A reactive wrapper to indexedDb using Rxjs
90 lines • 5.85 kB
JavaScript
import { map } from 'rxjs/operators';
import { wrapRequest } from './utils/wrap-request.util';
export class ReactiveIDBIndex {
/**
*
* @param index
* @param objectStore The ReactiveIDBObjectStore this index belongs to.
*/
constructor(index, objectStore) {
this.index = index;
this.objectStore = objectStore;
}
get keyPath() {
return this.index.keyPath;
}
get multiEntry() {
return this.index.multiEntry;
}
/**
* Returns the name of the index.
*/
get name() {
return this.index.name;
}
/**
*
*/
get unique() {
return this.index.unique;
}
/**
* Retrieves the number of records matching the given key or key range in query.
*
* If successful, request's result will be the count.
*/
count$(key) {
return wrapRequest(() => this.index.count(key));
}
/**
* Retrieves the value of the first record matching the given key or key range in query.
*
* If successful, request's result will be the value, or undefined if there was no matching record.
*/
get$(key) {
return wrapRequest(() => this.index.get(key)).pipe(map((value) => value !== undefined
? this.objectStore.transformer.deserialize(value)
: value));
}
/**
* Retrieves the values of the records matching the given key or key range in query (up to count if given).
*
* If successful, request's result will be an Array of the values.
*/
getAll$(query, count) {
return wrapRequest(() => this.index.getAll(query, count)).pipe(map((values) => values.map((v) => this.objectStore.transformer.deserialize(v))));
}
/**
* Retrieves the keys of records matching the given key or key range in query (up to count if given).
*
* If successful, request's result will be an Array of the keys.
*/
getAllKeys$(query, count) {
return wrapRequest(() => this.index.getAllKeys(query, count));
}
/**
* Retrieves the key of the first record matching the given key or key range in query.
*
* If successful, request's result will be the key, or undefined if there was no matching record.
*/
getKey$(key) {
return wrapRequest(() => this.index.getKey(key));
}
/**
* Opens a cursor over the records matching query, ordered by direction. If query is null, all records in index are matched.
*
* If successful, request's result will be an IDBCursorWithValue, or null if there were no matching records.
*/
openCursor$(query, direction) {
return wrapRequest(() => this.index.openCursor(query, direction), false);
}
/**
* Opens a cursor with key only flag set over the records matching query, ordered by direction. If query is null, all records in index are matched.
*
* If successful, request's result will be an IDBCursor, or null if there were no matching records.
*/
openKeyCursor$(query, direction) {
return wrapRequest(() => this.index.openKeyCursor(query, direction), false);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtaWRiLWluZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yZWFjdGl2ZS1pZGItaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4RCxNQUFNLE9BQU8sZ0JBQWdCO0lBc0IzQjs7OztPQUlHO0lBQ0gsWUFDbUIsS0FBZSxFQUN2QixXQUFzQztRQUQ5QixVQUFLLEdBQUwsS0FBSyxDQUFVO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUEyQjtJQUM5QyxDQUFDO0lBN0JKLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFZRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEdBQStCO1FBQ3BDLE9BQU8sV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsR0FBOEI7UUFDakMsT0FBTyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2hELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1osS0FBSyxLQUFLLFNBQVM7WUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDakQsQ0FBQyxDQUFDLEtBQUssQ0FDVixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FDTCxLQUF3QyxFQUN4QyxLQUFjO1FBRWQsT0FBTyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1RCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNiLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMvRCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FDVCxLQUF3QyxFQUN4QyxLQUFjO1FBRWQsT0FBTyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsR0FBOEI7UUFDcEMsT0FBTyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FDVCxLQUF3QyxFQUN4QyxTQUE4QjtRQUU5QixPQUFPLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQ1osS0FBd0MsRUFDeEMsU0FBOEI7UUFFOUIsT0FBTyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FDRiJ9