knex-repository

0.3.0 • Public • Published

knex-repository

Fat-free repository pattern implementation on top of knex.js.

Installation

$ npm i knex-repository

Usage

var util       = require('util');
var knex       = require('knex')({ dialect: 'postgres', connection: /* ... */ });
var Repository = require('knex-repository');
 
function ClientsRepository(options) {
  this.tableName = 'clients';
  // optional
  this.entityClass = Client;
  // default
  this.pk = 'id';
  Repository.call(this, options);
}
 
util.inherits(ClientsRepository, Repository);
 
var proto = ClientsRepository.prototype;
 
proto.online = function() {
  return this.scoped(function() {
    return this.where('last_seen_at', '>=', new Date(Date.now() - 15 * 60000));
  });
}
 
proto.byActivity = function() {
  return this.scoped(function() {
    return this.order('last_seen_at', 'desc');
  });
}
 
var clients = new ClientsRepository({ db: knex });
 
clients.create({ firstName: 'John', secondName: 'Doe' }).then(function(c) {
  // c is a Client
});
 
clients.byActivity().online().then(function(cs) {
  // cs is a Client[]
});

CoffeeScript:

class ClientsRepository extends Repository
  tableName: 'clients'
  pk: 'id'
  entityClass: Client
 
  @scopes
    online: ->
      @where('last_seen_at''>='new Date(Date.now() - 15 * 60 * 1000))
 
  byActivity: ->
    @scoped -> @order('last_seen_at''desc')

Supported databases

  • PostgreSQL

License

MIT

Package Sidebar

Install

npm i knex-repository

Weekly Downloads

1

Version

0.3.0

License

MIT

Last publish

Collaborators

  • kolesnikovde