1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import { getSerializerPromise, executeCallback, forEachItem } from './utils';
- export function setItemsWebsql(items, keyFn, valueFn, callback) {
- var localforageInstance = this;
- var promise = new Promise(function(resolve, reject) {
- localforageInstance.ready().then(function() {
- return getSerializerPromise(localforageInstance);
- }).then(function(serializer) {
- // Inspired from @lu4 PR mozilla/localForage#318
- var dbInfo = localforageInstance._dbInfo;
- dbInfo.db.transaction(function(t) {
- var query = 'INSERT OR REPLACE INTO ' +
- dbInfo.storeName +
- ' (key, value) VALUES (?, ?)';
- var itemPromises = forEachItem(items, keyFn, valueFn, function(key, value) {
- return new Promise(function(resolve, reject){
- serializer.serialize(value, function(value, error) {
- if (error) {
- reject(error);
- } else {
- t.executeSql(query,[key, value], function() {
- resolve();
- }, function(t, error) {
- reject(error);
- });
- }
- });
- });
- });
- Promise.all(itemPromises).then(function(){
- resolve(items);
- }, reject);
- }, function(sqlError) {
- reject(sqlError);
- }/*, function() {
- if (resolving) {
- resolve(items);
- }
- }*/);
- }).catch(reject);
- });
- executeCallback(promise, callback);
- return promise;
- }
|