3.4.1 • Published 6 years ago

seventy-eight v3.4.1

Weekly downloads
3
License
ISC
Repository
github
Last release
6 years ago

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
3.4.1

6 years ago

3.4.0

6 years ago

3.3.6

6 years ago

3.3.4

6 years ago

3.3.3

6 years ago

3.3.1

6 years ago

3.3.0

6 years ago

3.2.0

6 years ago

3.1.2

6 years ago

3.1.1

6 years ago

3.1.0

6 years ago

3.0.0

6 years ago

2.2.0

6 years ago

2.1.11

6 years ago

2.1.10

6 years ago

2.1.9

6 years ago

2.1.8

6 years ago

2.1.7

6 years ago

2.1.6

6 years ago

2.1.5

6 years ago

2.1.4

6 years ago

2.1.3

6 years ago

2.1.2

6 years ago

2.1.1

6 years ago

2.1.0

6 years ago

2.0.6

6 years ago

2.0.4

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

1.2.1

7 years ago

1.1.0

7 years ago

1.0.0

7 years ago

0.7.1

7 years ago

0.7.0

7 years ago

0.6.0

7 years ago

0.5.11

7 years ago

0.5.10

7 years ago

0.5.9

7 years ago

0.5.8

7 years ago

0.5.7

7 years ago

0.5.6

7 years ago

0.5.5

7 years ago

0.5.4

7 years ago

0.5.3

7 years ago

0.5.2

7 years ago

0.5.1

7 years ago

0.5.0

7 years ago

0.3.19

7 years ago

0.3.18

7 years ago

0.3.17

7 years ago

0.3.16

7 years ago

0.3.15

7 years ago

0.3.14

7 years ago

0.3.13

7 years ago

0.3.12

7 years ago

0.3.11

7 years ago

0.3.10

7 years ago

0.3.9

7 years ago

0.3.8

7 years ago

0.3.7

7 years ago

0.3.6

8 years ago

0.3.5

8 years ago

0.3.4

8 years ago

0.3.3

8 years ago

0.3.2

8 years ago

0.3.1

8 years ago

0.3.0

8 years ago

0.2.18

8 years ago

0.2.17

8 years ago

0.2.16

8 years ago

0.2.15

8 years ago

0.2.14

8 years ago

0.2.13

8 years ago

0.2.12

8 years ago

0.2.11

8 years ago

0.2.10

8 years ago

0.2.9

8 years ago

0.2.8

8 years ago

0.2.7

8 years ago

0.2.6

8 years ago

0.2.4

8 years ago

0.2.3

8 years ago

0.2.0

9 years ago

0.1.21

9 years ago

0.1.20

9 years ago

0.1.18

9 years ago

0.1.16

9 years ago

0.1.15

9 years ago

0.1.14

9 years ago

0.1.13

9 years ago

0.1.12

9 years ago

0.1.11

9 years ago

0.1.10

9 years ago

0.1.9

9 years ago

0.1.8

9 years ago

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.2

9 years ago

0.1.0

9 years ago

0.0.47

9 years ago

0.0.45

9 years ago

0.0.44

9 years ago

0.0.43

9 years ago

0.0.42

9 years ago

0.0.41

9 years ago

0.0.40

9 years ago

0.0.39

9 years ago

0.0.38

9 years ago

0.0.37

9 years ago

0.0.36

9 years ago

0.0.35

9 years ago

0.0.34

9 years ago

0.0.33

9 years ago

0.0.31

9 years ago

0.0.29

9 years ago

0.0.28

9 years ago

0.0.27

9 years ago

0.0.26

9 years ago

0.0.25

9 years ago

0.0.24

9 years ago

0.0.23

9 years ago

0.0.22

9 years ago

0.0.21

9 years ago

0.0.20

9 years ago

0.0.14

9 years ago

0.0.12

9 years ago

0.0.11

9 years ago

0.0.10

9 years ago

0.0.9

9 years ago

0.0.8

9 years ago

0.0.7

9 years ago

0.0.6

9 years ago

0.0.5

9 years ago

0.0.4

9 years ago

0.0.3

9 years ago

0.0.2

9 years ago

0.0.1

9 years ago