Extract database
and settings
modules
This commit is contained in:
parent
5bea894abd
commit
016432826b
4 changed files with 117 additions and 102 deletions
63
js/modules/settings.js
Normal file
63
js/modules/settings.js
Normal file
|
@ -0,0 +1,63 @@
|
|||
const isObject = require('lodash/isObject');
|
||||
const isString = require('lodash/isString');
|
||||
|
||||
|
||||
const ITEMS_STORE_NAME = 'items';
|
||||
const LAST_PROCESSED_INDEX_KEY = 'attachmentMigration_lastProcessedIndex';
|
||||
const IS_MIGRATION_COMPLETE_KEY = 'attachmentMigration_isComplete';
|
||||
|
||||
// Public API
|
||||
exports.getAttachmentMigrationLastProcessedIndex = connection =>
|
||||
getItem(connection, LAST_PROCESSED_INDEX_KEY);
|
||||
|
||||
exports.setAttachmentMigrationLastProcessedIndex = (connection, value) =>
|
||||
setItem(connection, LAST_PROCESSED_INDEX_KEY, value);
|
||||
|
||||
exports.isAttachmentMigrationComplete = async connection =>
|
||||
Boolean(await getItem(connection, IS_MIGRATION_COMPLETE_KEY));
|
||||
|
||||
exports.markAttachmentMigrationComplete = connection =>
|
||||
setItem(connection, IS_MIGRATION_COMPLETE_KEY, true);
|
||||
|
||||
// Private API
|
||||
const getItem = (connection, key) => {
|
||||
if (!isObject(connection)) {
|
||||
throw new TypeError('"connection" is required');
|
||||
}
|
||||
|
||||
if (!isString(key)) {
|
||||
throw new TypeError('"key" must be a string');
|
||||
}
|
||||
|
||||
const transaction = connection.transaction(ITEMS_STORE_NAME, 'readonly');
|
||||
const itemsStore = transaction.objectStore(ITEMS_STORE_NAME);
|
||||
const request = itemsStore.get(key);
|
||||
return new Promise((resolve, reject) => {
|
||||
request.onerror = event =>
|
||||
reject(event.target.error);
|
||||
|
||||
request.onsuccess = event =>
|
||||
resolve(event.target.result ? event.target.result.value : null);
|
||||
});
|
||||
};
|
||||
|
||||
const setItem = (connection, key, value) => {
|
||||
if (!isObject(connection)) {
|
||||
throw new TypeError('"connection" is required');
|
||||
}
|
||||
|
||||
if (!isString(key)) {
|
||||
throw new TypeError('"key" must be a string');
|
||||
}
|
||||
|
||||
const transaction = connection.transaction(ITEMS_STORE_NAME, 'readwrite');
|
||||
const itemsStore = transaction.objectStore(ITEMS_STORE_NAME);
|
||||
const request = itemsStore.put({ id: key, value }, key);
|
||||
return new Promise((resolve, reject) => {
|
||||
request.onerror = event =>
|
||||
reject(event.target.error);
|
||||
|
||||
request.onsuccess = () =>
|
||||
resolve();
|
||||
});
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue