Skip to content

Commit

Permalink
improve indexeddb error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
0x8890 committed Jan 24, 2016
1 parent 662ac9f commit cc7fada
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 13 deletions.
3 changes: 2 additions & 1 deletion doc/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# Changelog


##### 1.11.4 (2016-01-24)
##### 1.11.5 (2016-01-24)
- Polish: use `msgpack` to store data in IndexedDB instead of JSON, which allows use of Transferable & ArrayBuffer.
- Polish: improve IndexedDB error handling.


##### 1.11.3 (2016-01-23)
Expand Down
8 changes: 4 additions & 4 deletions lib/adapter/adapters/indexeddb/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ module.exports = function (Adapter) {
var type

if (data.id !== id) return null
if (data.error) return reject(data.error)
if (data.error) return reject(new Error(data.error))

self.worker.removeEventListener('message', listener)

Expand Down Expand Up @@ -122,7 +122,7 @@ module.exports = function (Adapter) {
var data = event.data

if (data.id !== id) return null
if (data.error) return reject(data.error)
if (data.error) return reject(new Error(data.error))

self.worker.removeEventListener('message', listener)
return resolve(records)
Expand Down Expand Up @@ -169,7 +169,7 @@ module.exports = function (Adapter) {
var data = event.data

if (data.id !== id) return null
if (data.error) return reject(data.error)
if (data.error) return reject(new Error(data.error))

self.worker.removeEventListener('message', listener)

Expand Down Expand Up @@ -198,7 +198,7 @@ module.exports = function (Adapter) {
var data = event.data

if (data.id !== id) return null
if (data.error) return reject(data.error)
if (data.error) return reject(new Error(data.error))

self.worker.removeEventListener('message', listener)

Expand Down
42 changes: 35 additions & 7 deletions lib/adapter/adapters/indexeddb/worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ function worker () {
var request = indexedDB.open(data.name)
var typesArray = data.typesArray

request.onerror = callback
request.onerror = errorConnection
request.onupgradeneeded = handleUpgrade
request.onsuccess = handleSuccess

Expand Down Expand Up @@ -76,7 +76,7 @@ function worker () {

db.close()
request = indexedDB.open(name, version)
request.onerror = callback
request.onerror = errorReconnection
request.onupgradeneeded = handleUpgrade
request.onsuccess = function (event) {
db = event.target.result
Expand Down Expand Up @@ -110,9 +110,21 @@ function worker () {
if (counter === typesArray.length)
return callback(null, payload, transfer)
}
cursor.onerror = callback
cursor.onerror = errorIteration
}
}

function errorConnection () {
callback('The database connection could not be established.')
}

function errorReconnection () {
callback('An attempt to reconnect failed.')
}

function errorIteration () {
callback('Failed to read record.')
}
}


Expand All @@ -135,13 +147,17 @@ function worker () {
object[dataKey] = record
request = objectStore.add(object)
request.onsuccess = check
request.onerror = callback
request.onerror = error
}

function check () {
counter++
if (counter === recordsLength) callback()
}

function error () {
callback('A record could not be created.')
}
}


Expand All @@ -159,13 +175,17 @@ function worker () {
object[dataKey] = record
request = objectStore.put(object)
request.onsuccess = check
request.onerror = callback
request.onerror = error
}

function check () {
counter++
if (counter === recordsLength) callback()
}

function error () {
callback('A record could not be updated.')
}
}


Expand All @@ -180,13 +200,17 @@ function worker () {
id = ids[i]
request = objectStore.delete(type + delimiter + id)
request.onsuccess = check
request.onerror = callback
request.onerror = error
}

function check () {
counter++
if (counter === ids.length) callback()
}

function error () {
callback('A record could not be deleted.')
}
}


Expand All @@ -196,6 +220,10 @@ function worker () {
var objectStore = transaction.objectStore(type)
var request = objectStore.clear()
request.onsuccess = function () { callback() }
request.onerror = callback
request.onerror = error

function error () {
callback('Not all records could be deleted.')
}
}
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "fortune",
"description": "Application middleware for Node.js and web browsers.",
"version": "1.11.4",
"version": "1.11.5",
"license": "MIT",
"author": {
"email": "[email protected]",
Expand Down

0 comments on commit cc7fada

Please sign in to comment.