0.1.7 • Published 9 years ago

knex-model v0.1.7

Weekly downloads
2
License
ISC
Repository
github
Last release
9 years ago

knex-model Build Status Coverage Status Code Climate

Small ORM. It is built atop the Knex Query Builder

Example

var Model = require('knex-model')(knex);
var Promise = require('bluebird');

var User = Model.define('User', {
  tableName: 'users',
  hasMany: [
    {
      name: 'entries',
      model: 'Entry',
      key: 'user_id'
    }
  ]
}, {
  instanceMethod: function() {}
});

var Entry = Model.define('Entry', {
  tableName: 'entries',
  belongsTo: {
    name: 'author',
    model: 'User',
    key: 'user_id'
  }
});

User.register('beforeCreate', function(data) {
  var datetime = new Date();
  data.created_at = data.updated_at = data;
});
//  Support Promise
User.register('afterCreate', function(newId) {
  newId = newId[0];
  return Entry.create({ title: 'create new user ' + newId });
});

// same to knex('users').where(...).update({})
User.where(...).update({...});
User.where(...).delete();

User.first('id', 1).then(function(user) {
  return user.entries.create({
    title: 'title'
  });
}).then(function(insertId) {
  return user.entries.find();
}).then(function(entries) {
  console.log(entries);
  return Promise.props({
    isOk: entries[0].update({ title: 'updated' }),
    deleteId: entries[1].delete()
  });
}).then(function(result) {
  console.log(result);
});

TODO

  • test
  • example
  • Relation through
  • Realtion hasOne
  • boardcast event
    • beforeCreate
    • afterCreate
    • beforeUpdate
    • afterCreate
    • beforeFind
    • afterFind
    • afterFindOne
0.1.7

9 years ago

0.1.6

9 years ago

0.1.5

9 years ago

0.1.4

9 years ago

0.1.3

9 years ago

0.1.1

9 years ago

0.0.5

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago