hydrogen-web/src/matrix/storage/idb/store.js

80 lines
1.7 KiB
JavaScript
Raw Normal View History

2019-02-05 04:51:50 +05:30
import QueryTarget from "./query-target.js";
2019-02-07 05:50:27 +05:30
import { reqAsPromise } from "./utils.js";
import { StorageError } from "../common.js";
class QueryTargetWrapper {
constructor(qt) {
this._qt = qt;
}
openKeyCursor(...params) {
try {
return this._qt.openKeyCursor(...params);
} catch(err) {
throw new StorageError("openKeyCursor failed", err);
}
}
openCursor(...params) {
try {
return this._qt.openCursor(...params);
} catch(err) {
throw new StorageError("openCursor failed", err);
}
}
put(...params) {
try {
return this._qt.put(...params);
} catch(err) {
throw new StorageError("put failed", err);
}
}
add(...params) {
try {
return this._qt.add(...params);
} catch(err) {
throw new StorageError("add failed", err);
}
}
get(...params) {
try {
return this._qt.get(...params);
} catch(err) {
throw new StorageError("get failed", err);
}
}
index(...params) {
try {
return this._qt.index(...params);
} catch(err) {
throw new StorageError("index failed", err);
}
}
}
2019-02-05 04:51:50 +05:30
export default class Store extends QueryTarget {
2019-02-11 01:55:29 +05:30
constructor(idbStore) {
super(new QueryTargetWrapper(idbStore));
2019-02-05 04:51:50 +05:30
}
2019-02-11 01:55:29 +05:30
get _idbStore() {
2019-02-07 05:50:27 +05:30
return this._target;
2019-02-05 04:51:50 +05:30
}
index(indexName) {
return new QueryTarget(new QueryTargetWrapper(this._idbStore.index(indexName)));
2019-02-07 05:50:27 +05:30
}
put(value) {
2019-02-11 01:55:29 +05:30
return reqAsPromise(this._idbStore.put(value));
2019-02-07 05:50:27 +05:30
}
add(value) {
2019-02-11 01:55:29 +05:30
return reqAsPromise(this._idbStore.add(value));
2019-02-05 04:51:50 +05:30
}
}