kis-js/src/modules/indexedDB.js

115 lines
2.1 KiB
JavaScript
Raw Normal View History

2012-02-08 11:36:43 -05:00
/**
* Module for simplifying Indexed DB access
*/
(function() {
"use strict";
var db = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB,
indexedDB = {};
2012-02-23 12:42:33 -05:00
//Well, some browsers don't support it yet
if(typeof db === "undefined")
{
return;
}
2012-02-08 11:36:43 -05:00
/**
* 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)
{
2012-02-08 11:54:46 -05:00
var request = {};
2012-02-28 14:37:42 -05:00
version = version || 1;
2012-02-08 11:36:43 -05:00
2012-02-08 11:54:46 -05:00
// Ask for permission to use db
request = db.open(dbname, version);
// Assign onupgradeneeded callback
2012-02-08 11:36:43 -05:00
if(typeof onupgradeneeded !== "undefined")
{
request.onupgradeneeded = onupgradeneeded;
}
2012-02-08 11:54:46 -05:00
/**
* @private
*/
request.onerror = function(event)
{
console.log("IndexedDB disallowed.");
};
/**
* @private
*/
request.onsuccess = function(event)
{
// Connect to the specified db
indexedDB.current_db = request.result;
};
2012-02-28 14:37:42 -05:00
},
/**
* 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;
2012-02-08 11:36:43 -05:00
}
2012-02-28 14:37:42 -05:00
2012-02-08 11:36:43 -05:00
};
$_.ext('indexedDB', indexedDB);
}());