seventy-eight

3.4.1 • Public • Published

Active Record Lite

wercker status Coverage Status dependencies Status

var seventyEight = require('seventy-eight');

module.exports = seventyEight.createModel({
  constructor: function User(props) {

  },
  query: {
    findByUsername: function(username) {
      return this.where({ username: username }).one();
    }
  },
  instance: {
    hasRole: function(role) {
      return !!_.intersection([].concat(role), this.roles.split(',')).length;
    }
  }
});

Initialize

Configure DB connection at runtime:

DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_SCHEMA, DEBUG

Documentation

API

// model creation
seventyEight.createModel({ config });

Static Methods

all()

// return all records according to any conditionals applied
User.all().then(function(records) {
  records // Array
}, function(err) {
  err // SQL error
});

select()

// Array or csv syntax
User.select('id, name, date_created'])
User.select(['id', 'name', 'date_created'])

one()

User.where({ admin: 1 }).one().then(function(record) {
  record // User instance
}, function(err) {
  err // SQL error
});

joins()

User.select("id, name, zip_code, GROUP_CONCAT(roles.name SEPARATOR ',')")
  .joins([
    'INNER JOIN locations ON users.zip_code = locations.zip_code',
    'INNER JOIN user_roles ON users.id = user_roles.user_id',
    'INNER JOIN roles ON user_roles.role_id = roles.id'
  ])

where()

// simple JS object AND concatenation
User.where({ admin: 1 } })
  // WHERE admin = 1

// OR using a distributive syntax
User.where({ '$OR': { admin: 1, access: 1 } } })
  // WHERE admin = 1 OR access = 1

// multiple where statements with custom comparators
User.where({ id: 1 }).where({ id: ['!=', 1] }).where({ id: ['>=', 1] });
  // WHERE `id` = 1 AND `id` != 1 AND `id` >= 1

// multi-level AND OR compositions
User.where({ $OR: { name: 'root', $AND: { title: 'manager', $OR: { updated: 0, deleted: 1 } } } })
  // WHERE (`name` = 'root' OR (`title` = 'manager' AND (`updated` = 0 OR `deleted` = 1)))

order()

group()

limit()

then()

Instance Methods

save()

var user = new User({ name: 'Wiley Bennett', admin: 1 });
user.save().then(function(user) {
  // user instance with populated `id` field
});

update()

delete()

afterFind()

var seventyEight = require('seventy-eight');

module.exports = seventyEight.createModel({
  constructor: function User(props) {
    this.data_field = props.data;
  },
  instance: {
    afterFind: function() {
      this.data = JSON.parse(this.json);
    }
  }
});

beforeSave(properties)

var seventyEight = require('seventy-eight');

module.exports = seventyEight.createModel({
  constructor: function User(props) {

  },
  instance: {
    beforeSave: function(props) {
      props.json = JSON.stringify(props.data);
      return props;
    }
  }
});

Literal SQL

Write literal SQL by using the connector:

seventyEight.db.query("SELECT * FROM USERS;")
  .then(function(response) {}, function(err) {});

Development

Run tests

Create a .env file with your local MySQL connection credentials

DB_HOST=localhost
DB_USER=root
DB_PASSWORD=root
DB_PORT=3306
DB_SCHEMA=seventy_eight

Readme

Keywords

none

Package Sidebar

Install

npm i seventy-eight

Weekly Downloads

6

Version

3.4.1

License

ISC

Unpacked Size

89.5 kB

Total Files

49

Last publish

Collaborators

  • wileybenet