-
Notifications
You must be signed in to change notification settings - Fork 1
Home
darthapo edited this page Sep 13, 2010
·
3 revisions
DM.js is a simple JavaScript ORM (loosely based on ActiveRecord) that supports the following sqlite browser backends: Safari/HTML5, Adobe Air, and Google Gears.
This project is still in the early phases.
- HTML 5 and Google Gear back-ends
- Simple models and schema generator
- Base CRUD on models
- Event callbacks for beforeCreate, afterCreate, beforeSave, and afterSave
- Adobe AIR back-end
- Relationships (planned: hasMany, hasAndBelongsToMany, hasOne, belongsTo)
- Finder WHERE clauses
In your application’s initialization, you’ll need to create the database object:
// the variable name doesn’t matter… var DB = new DM.Database({ name: ‘GraphicNovelist.db’, displayName: ‘Graphic Novelist’, description: ‘Graphic Novelist database… What?’ });Now you can define your models:
var Script = new DM.Model(‘scripts’, { // This is the schema builder function you’ll need to fill out… schema: function(t){ // An id field is automatically created for models t.text(‘title’); t.text(‘source’); t.text(‘html’); // Creates created_on && updated_on t.timestamps(‘on’); // Not implemented yet, but this is how it’ll probably work… t.hasMany(‘Revision’, { cascadeDelete:true }); t.beforeSave(function(self){ // use model#get and model#set to access attributes… var renderedSource = GraphicNovelist.render( self.get(‘source’) ); self.set(‘html’, renderedSource ); }) } // Any model instance methods you’d like here… });Creating a model instance:
var script = Script.create({ title:“A new title!” });Typical model kinds of things to do:
script.save(); script.destroy(); Script.all(function(allScripts){ // Since the HTML5 back-end is strictly asynchronous all // database access methods require callbacks to work with // the fetched models… allScripts.each(function(script){ // build DOM nodes, or whatever else you’d like… }) }); Script.find(1, function(script){ // Script 1 stuff here… });- Need WHERE builder so finders can actually be useful
- Tests, tests, and more tests!