2019-02-05 00:21:50 +01:00
|
|
|
import QueryTarget from "./query-target.js";
|
2019-02-07 01:20:27 +01:00
|
|
|
import { reqAsPromise } from "./utils.js";
|
2019-06-26 22:00:50 +02:00
|
|
|
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 00:21:50 +01:00
|
|
|
|
|
|
|
export default class Store extends QueryTarget {
|
2019-02-10 21:25:29 +01:00
|
|
|
constructor(idbStore) {
|
2019-06-26 22:00:50 +02:00
|
|
|
super(new QueryTargetWrapper(idbStore));
|
2019-02-05 00:21:50 +01:00
|
|
|
}
|
|
|
|
|
2019-02-10 21:25:29 +01:00
|
|
|
get _idbStore() {
|
2019-02-07 01:20:27 +01:00
|
|
|
return this._target;
|
2019-02-05 00:21:50 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
index(indexName) {
|
2019-06-26 22:00:50 +02:00
|
|
|
return new QueryTarget(new QueryTargetWrapper(this._idbStore.index(indexName)));
|
2019-02-07 01:20:27 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
put(value) {
|
2019-02-10 21:25:29 +01:00
|
|
|
return reqAsPromise(this._idbStore.put(value));
|
2019-02-07 01:20:27 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
add(value) {
|
2019-02-10 21:25:29 +01:00
|
|
|
return reqAsPromise(this._idbStore.add(value));
|
2019-02-05 00:21:50 +01:00
|
|
|
}
|
2019-06-26 22:00:50 +02:00
|
|
|
}
|