115 lines
2.1 KiB
JavaScript
115 lines
2.1 KiB
JavaScript
/**
|
|
* Module for simplifying Indexed DB access
|
|
*/
|
|
(function() {
|
|
"use strict";
|
|
|
|
var db = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB,
|
|
indexedDB = {};
|
|
|
|
//Well, some browsers don't support it yet
|
|
if(typeof db === "undefined")
|
|
{
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* Module for simplifying Indexed DB access
|
|
*
|
|
* @namespace
|
|
* @name indexedDB
|
|
* @memberOf $_
|
|
*/
|
|
indexedDB = {
|
|
current_db: null,
|
|
/**
|
|
* Connects to an indexedDB database
|
|
*
|
|
* @memberOf $_.indexedDB
|
|
* @name connect
|
|
* @function
|
|
* @param string dbname
|
|
* @param [int] version
|
|
* @param [function] onupgradeneeded
|
|
*/
|
|
connect: function(dbname, version, onupgradeneeded)
|
|
{
|
|
var request = {};
|
|
|
|
version = version || 1;
|
|
|
|
// Ask for permission to use db
|
|
request = db.open(dbname, version);
|
|
|
|
// Assign onupgradeneeded callback
|
|
if(typeof onupgradeneeded !== "undefined")
|
|
{
|
|
request.onupgradeneeded = onupgradeneeded;
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
request.onerror = function(event)
|
|
{
|
|
console.log("IndexedDB disallowed.");
|
|
};
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
request.onsuccess = function(event)
|
|
{
|
|
// Connect to the specified db
|
|
indexedDB.current_db = request.result;
|
|
};
|
|
},
|
|
/**
|
|
* Helper function to create a new object store
|
|
*
|
|
* @memberOf $_.indexedDB
|
|
* @name create_store
|
|
* @function
|
|
* @param string name
|
|
* @param [string] key
|
|
* @param [bool] generator
|
|
* @return IDBDataStore object
|
|
*/
|
|
create_store: function(name, key, generator)
|
|
{
|
|
var params = {};
|
|
|
|
if(typeof key !== "undefined")
|
|
{
|
|
params.keyPath = key;
|
|
}
|
|
|
|
if(typeof generator !== "undefined")
|
|
{
|
|
// Cast to a boolean value
|
|
params.autoIncrement = !! generator;
|
|
}
|
|
|
|
return db.createObjectStore(name, params);
|
|
},
|
|
/**
|
|
* Delete an object store
|
|
*
|
|
* @memberOf $_.indexedDB
|
|
* @name delete_store
|
|
* @function
|
|
* @param string name
|
|
*/
|
|
delete_store: function(name)
|
|
{
|
|
var request = db.deleteObjectStore();
|
|
|
|
// Pass the error up
|
|
request.onerror = db.onerror;
|
|
}
|
|
|
|
};
|
|
|
|
$_.ext('indexedDB', indexedDB);
|
|
|
|
}()); |