@backwood/sequelize

1.0.6 • Public • Published

Installation

npm install --save @backwood/backwood @backwood/rest @backwood/sequelize

Packages

Model Usage

Start by adding the provider to the providers array in your start/app.js file

...
 
exports.providers = [
  '@backwood/sequelize', // <-- must be added before the rest of the Backwood providers
  '@backwood/rest',
  '@backwood/backwood'
]

Now export an object named models in the same file

exports.models = {
  Users: 'App/Models/Users'
}

app/Models/Users

'use strict'
 
const bcrypt = use('bcryptjs')
const Model = use('Model')
 
module.exports = class Users extends Model {
 
  /**
   * Whether or not a service
   * should be created for this model
   *
   * @property createService
   * @optional
   * @static
   * @type {Boolean} 
   */
   static get createService() {
     return false
   }
 
  /**
   * Define name for the service
   *
   * @property serviceName
   * @optional
   * @static
   * @type {String} 
   */
  static get serviceName() {
    return 'users'
  }
 
  /**
   * Define pagination for the service
   *
   * @property paginate
   * @optional
   * @static
   * @type {Object} 
   */
  static get paginate() {
    return {}
  }
 
  /**
   * Define database table for the Sequelize Model
   *
   * @property tableName
   * @required
   * @static
   * @type {String} 
   */
  static get tableName() {
    return 'users'
  }
 
  /**
   * Define attributes for the Sequelize Model
   *
   * @method attributes
   * @argument {Object} DataTypes 
   * @returns {Object} 
   * @static
   * @required
   */
  static attributes(DataTypes) {
    return {
      username: DataTypes.STRING
    }
  }
 
  /**
   * Define options for the Sequelize Model
   *
   * @property options
   * @optional
   * @static
   * @type {Object} 
   */
  static get options() {
    return {
      timestamps: false
    }
  }
 
  /**
   * Define service hooks
   *
   * @property serviceHooks
   * @static
   * @type {Object} 
   */
  static get serviceHooks() {
    return {}
  }
 
  /**
  * Define hooks for the Sequelize Model
  *
  * @property hooks
  * @static
  * @type {Object} 
  */
  static get hooks() {
    return {
      beforeCreate(account, options) {
        const salt = bcrypt.genSaltSync(10)
        account.password = bcrypt.hashSync(account.password, salt)
      }
    }
  }
 
  /**
   * Sequelize instance method
   * for verifying a users password
   *
   * @method verifyPassword
   * @param {String} password 
   * @return {String} hashed password
   */
  verifyPassword(password) {
    return bcrypt.compareSync(password, this.password)
  }
 
}

Keywords

none

install

npm i @backwood/sequelize

Downloadsweekly downloads

0

version

1.0.6

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability