Skip to content

Instantly share code, notes, and snippets.

@superfeedr
Created September 20, 2011 13:00
Show Gist options
  • Save superfeedr/1229017 to your computer and use it in GitHub Desktop.
Save superfeedr/1229017 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;
var IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction; // No prefix in moz
var dbRequest = indexedDB.open("test", "");
var db = null;
function insertMovie() {
var writeTransaction = db.transaction(["movies"], IDBTransaction.READ_WRITE, 0);
var store = writeTransaction.objectStore("movies");
var writeRequest = store.put({title: "Avatar", format: "Streaming"}, "1");
writeRequest.onerror = function (e) {
console.log("Couldn't insert : " + e.target.webkitErrorMessage);
deleteMovie();
};
writeRequest.onsuccess = function (e) {
console.log("Inserted");
deleteMovie();
};
}
function deleteMovie() {
var deleteTransaction = db.transaction(["movies"], IDBTransaction.READ_WRITE);
var store = deleteTransaction.objectStore("movies");
var deleteRequest = store.delete("1");
deleteRequest.onsuccess = function (event) {
console.log("Deleted");
insertMovie(); // insert again
};
deleteRequest.onerror = function (event) {
console.log("Could not delete... Maybe there was nothing to delete!");
};
}
dbRequest.onsuccess = function (e) {
db = e.target.result; // Attach the connection ot the queue.
if (db.version === "1.0") {
insertMovie();
} else {
var versionRequest = db.setVersion("1.0");
versionRequest.onsuccess = function (e) {
var store = db.createObjectStore("movies");
store.createIndex("titleIndex", "title", {
unique: true
});
store.createIndex("formatIndex", "format", {
unique: false
});
insertMovie();
}
}
}
dbRequest.onerror = function (e) {
console.error("Couldn't not connect to the database");
};
dbRequest.onabort = function (e) {
console.error("Connection to the database aborted");
};
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment