John Herren’s Blog

ORM for Google Gears

June 4, 2007 · 1 Comment

Since it looks like sqlite is going to be the db layer for Google Gears, a database abstraction layer may not be a very important feature, since we don’t exactly need portable SQL. However, an object-relational mapping library could come in handy.

gears-dblib didn’t take long to pop up, and you can bet we’ll see something close to ActiveRecord very, very soon. One less reason to get started with those offline-capable apps.

Here’s the example useage for gears-dblib

 var db = new GearsDB('gears-test');

    var bob = {id: 3, name: 'Bob', url: 'http://bob.com', description: 'whee'};
    db.insertRow('person', bob);
    db.insertRow('person', bob, 'name = ?', ['Bob']);

    db.selectAll('select * from person', null, function(person) {
       document.getElementById('selectAll').innerHTML += ' ' + person.name;
    });

    db.selectRows('person', 'name like ?', ['%'], function(person) {
       document.getElementById('selectRows').innerHTML += ' ' + person.name;
    });

    var person = db.selectRow('person', 'id = 1');
    document.getElementById('selectRow').innerHTML = person.name;  

    // update
    person.name = 'Harry';
    db.updateRow('person', person);
    person = db.selectRow('person', 'id = 1');
    document.getElementById('updateRow').innerHTML = person.name;

    // force
    person.name = 'Sally';
    db.forceRow('person', person);
    person = db.selectRow('person', 'id = 1');
    document.getElementById('forceRow').innerHTML = person.name;

    var adam = {name: 'Adam', url: 'http://adam.com', description: 'long hair'};
    db.forceRow('person', adam);
    person = db.selectRow('person', 'id = 4');
    document.getElementById('forceRow2').innerHTML = person.name;

    db.deleteRow('person', bob);

Categories: mashups

1 response so far ↓

Leave a Comment