0.0.3 • Published 5 years ago

@r-berto811/sequelize-models-register v0.0.3

Weekly downloads
1
License
ISC
Repository
github
Last release
5 years ago

sequelize-models-register npm version

The Command Line Interface (CLI) to generate file with exports of all models instances. This command is used with sequelize-cli.

Table of Contents

Installation

Install CLI locally to your node_modules folder with

$ npm install --save @r-berto811/sequelize-models-register

You should be able to run CLI with

$ node_modules/.bin/sequelize:register-models

Usage

Command

Sequelize Models Register CLI [Node: 6.11.2, CLI: 3.0.0, ORM: 4.8.0]

sequelize:register-models <dir> [options] <outfile>

Arguments:
  <dir>       Directory to find models in.
  <outfile>   Output file with exports of models classes.

Options:
  -V  --version       Show version number                             [boolean]
  -h  --help          Show help                                       [boolean]
  -s  --semicolons    Generate output file with semicolons            [boolean]
  -g  --generation    Set generation of javascript (es5, es6)         [string]
  -t  --template      Set path to custom template                     [string]
  -c  --config        Set path to file with database config           [string]

Running CLI

  sequelize:register-models ./database/models --generation es6 --config ./config/database.config.js ./app/models.js

Example of database config

  // config/database.config.js
  module.exports = {
    database: process.env.DB_DATABASE,
    username: process.env.DB_USERNAME,
    password: process.env.DB_PASSWORD,
    dialect: 'mysql',
    host: process.env.DB_HOST,
    port: process.env.DB_PORT
  }

Custom template

Template syntax

To create your custom template, use simple lodash template syntax:

'use strict';

// Import dependencies.
import { Sequelize, DataTypes } from 'sequelize';

// Declare config.
<% if (sequelizeConfig.file) { %>
  const config = require('<%= sequelizeConfig.file %>');
<% } else { %>
  const config = {
  <% Object.keys(sequelizeConfig.env).forEach(function(key){ %>  <%= key %>: <%=sequelizeConfig.env[key]%>
  <% }); %>};
<% } %>

// Create new sequelize instance and export
export const sequelize = new Sequelize(config.database, config.username, config.password, config);

// Export list of models
<% models.forEach(function(modelData){ %>
  export const <%= modelData.name %> = require('<%= modelData.path %>')(sequelize, DataTypes);
<% }); %>

Available data in templates

{
  sequelizeConfig: {
    // it will be used firstly, if config option is setted
    file: 'path/to/your/database/config.js',
    // default options to generate config, based on ENV parameters
    env: {
      database: `process.env.DB_DATABASE,`,
      username: `process.env.DB_USERNAME,`,
      password: `process.env.DB_PASSWORD,`,
      dialect: `process.env.DB_DIALECT || 'mysql',`,
      host: `process.env.DB_HOST || 'localhost',`,
      port: `process.env.DB_PORT || 3306`
    },
    // array of models data
    models: [
      { name: 'User', path: '../models/user.js' }
      { name: 'Profession', path: '../models/profession.js' }
    ]
  }
}

References