ajsfw
Version:
Ajs Framework
137 lines (136 loc) • 6.53 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var logger = require("ajsfw/dbg/logger");
var consts = require("./constants");
var logmsg = require("./Strings_Log.Debug");
var IndexedDbStorageProvider = (function () {
function IndexedDbStorageProvider(db) {
this.__db = db;
}
Object.defineProperty(IndexedDbStorageProvider.prototype, "length", {
get: function () { return this.__length; },
enumerable: true,
configurable: true
});
IndexedDbStorageProvider.prototype.initialize = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
logger.log(logger.LogType.Enter, 0, logmsg.LOG_AJSRESSTORP, this);
if (this.__initialized) {
return [2];
}
this.__initialized = true;
logger.log(logger.LogType.Info, 3, logmsg.LOG_AJSRESSTORP, this, logmsg.LOG_INITIALIZING_INDEXEDDB_STORAGE);
return [4, this.__db.initialize()];
case 1:
_a.sent();
return [4, this.__db.createStore(consts.INDEXDB_STORAGE_PROVIDER_STORAGE_NAME, { keyPath: "key", autoIncrement: false }, function (store) {
})];
case 2:
_a.sent();
logger.log(logger.LogType.Exit, 0, logmsg.LOG_AJSRESSTORP, this);
return [2];
}
});
});
};
IndexedDbStorageProvider.prototype.clear = function () {
var _this = this;
logger.log(logger.LogType.Enter, 0, logmsg.LOG_AJSRESSTORP, this);
this.__length = 0;
return this.__db.doStoreRequest(consts.INDEXDB_STORAGE_PROVIDER_STORAGE_NAME, "readwrite", function (store) {
logger.log(logger.LogType.Info, 3, logmsg.LOG_AJSRESSTORP, _this, logmsg.LOG_CLEARING_INDEXEDDB_STORAGE);
return store.clear();
});
};
IndexedDbStorageProvider.prototype.setItem = function (key, value) {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
var oldItem;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
logger.log(logger.LogType.Enter, 0, logmsg.LOG_AJSRESSTORP, this);
return [4, this.getItem(key)];
case 1:
oldItem = _a.sent();
return [4, this.__db.doStoreRequest(consts.INDEXDB_STORAGE_PROVIDER_STORAGE_NAME, "readwrite", function (store) {
logger.log(logger.LogType.Info, 3, logmsg.LOG_AJSRESSTORP, _this, logmsg.LOG_SETTING_INDEXEDDB_STORAGE_ITEM + " " + key + ": " + value, value);
return store.put({ key: key, value: value });
})];
case 2:
_a.sent();
if (oldItem === null) {
this.__length++;
}
return [2];
}
});
});
};
IndexedDbStorageProvider.prototype.getItem = function (key) {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
var obj;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, this.__db.doStoreRequest(consts.INDEXDB_STORAGE_PROVIDER_STORAGE_NAME, "readonly", function (store) {
logger.log(logger.LogType.Info, 3, logmsg.LOG_AJSRESSTORP, _this, logmsg.LOG_GETTING_INDEXEDDB_STORAGE_ITEM + " " + key);
var dbr = store.get(key);
return dbr;
})];
case 1:
obj = _a.sent();
if (obj === undefined) {
return [2, null];
}
return [2, obj.value];
}
});
});
};
IndexedDbStorageProvider.prototype.removeItem = function (key) {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, this.__db.doStoreRequest(consts.INDEXDB_STORAGE_PROVIDER_STORAGE_NAME, "readonly", function (store) {
logger.log(logger.LogType.Info, 3, logmsg.LOG_AJSRESSTORP, _this, logmsg.LOG_REMOVING_INDEXEDDB_STORAGE_ITEM + " " + key);
return store.delete(key);
})];
case 1:
_a.sent();
this.__length--;
return [2];
}
});
});
};
IndexedDbStorageProvider.prototype.__count = function () {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
var c;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!this.__db.isOldIDbImplementation) return [3, 2];
return [4, this.__db.countItemsUsingCursor(consts.INDEXDB_STORAGE_PROVIDER_STORAGE_NAME)];
case 1:
c = _a.sent();
return [2, c];
case 2: return [4, this.__db.doStoreRequest(consts.INDEXDB_STORAGE_PROVIDER_STORAGE_NAME, "readonly", function (store) {
logger.log(logger.LogType.Info, 3, logmsg.LOG_AJSRESSTORP, _this, logmsg.LOG_COUNTING_INDEXEDDB_ITEMS);
return store.count();
})];
case 3:
c = _a.sent();
return [2, c];
}
});
});
};
return IndexedDbStorageProvider;
}());
exports.IndexedDbStorageProvider = IndexedDbStorageProvider;