1.3.1 • Published 10 years ago

sequelize-gen v1.3.1

Weekly downloads
12
License
MIT
Repository
github
Last release
10 years ago

Sequelize-Auto

Build Status Dependency Status Code Climate Test Coverage

Automatically generate models for SequelizeJS via the command line.

Install

npm install -g sequelize-gen

Prerequisites

You will need to install the correct dialect binding globally before using sequelize-gen.

Example for MySQL/MariaDB

npm install -g mysql

Example for Postgres

npm install -g pg pg-hstore

Example for Sqlite3

npm install -g sqlite

Example for MSSQL

npm install -g tedious

Usage

[node] sequelize-gen -h <host> -d <database> -u <user> -x [password] -p [port]  --dialect [dialect] -c [/path/to/config] -o [/path/to/models] -t [tableName]

Options:
  -h, --host        IP/Hostname for the database.   [required]
  -d, --database    Database name.                  [required]
  -u, --user        Username for database.
  -x, --pass        Password for database.
  -p, --port        Port number for database.
  -c, --config      JSON file for Sequelize's constructor "options" flag object as defined here: https://sequelize.readthedocs.org/en/latest/api/sequelize/
  -o, --output      What directory to place the models.
  -e, --dialect     The dialect/engine that you're using: postgres, mysql, sqlite
  -a, --additional  Path to a json file containing model definitions (for all tables) which are to be defined within a model's configuration parameter. For more info: https://sequelize.readthedocs.org/en/latest/docs/models-definition/#configuration
  -t, --tables      Comma-separated names of tables to import

Example

sequelize-gen -o "./models" -d sequelize_auto_test -h localhost -u my_username -p 5432 -x my_password -e postgres

Produces a file/files such as ./models/Users.js which looks like:

/* jshint indent: 2 */

module.exports = function(sequelize, DataTypes) {
  return sequelize.define('Users', {
    id: {
      field: 'id',
      type: DataTypes.INTEGER(11),
      allowNull: false,
      primaryKey: true,
      autoIncrement: true
    },
    username: {
      field: 'username',
      type: DataTypes.STRING,
      allowNull: true
    },
    touchedAt: {
      field: 'touched_at',
      type: DataTypes.DATE,
      allowNull: true
    },
    aNumber: {
      field: 'a_number',
      type: DataTypes.INTEGER(11),
      allowNull: true
    },
    bNumber: {
      field: 'b_number',
      type: DataTypes.INTEGER(11),
      allowNull: true
    },
    validateTest: {
      field: 'validate_test',
      type: DataTypes.INTEGER(11),
      allowNull: true
    },
    validateCustom: {
      field: 'validate_custom',
      type: DataTypes.STRING,
      allowNull: false
    },
    dateAllowNullTrue: {
      field: 'date_allow_null_true',
      type: DataTypes.DATE,
      allowNull: true
    },
    defaultValueBoolean: {
      field: 'default_value_boolean',
      type: DataTypes.BOOLEAN,
      allowNull: true,
      defaultValue: '1'
    }
  }, {
    tableName: 'users',
    timestamps: false,
    freezeTableName: true
  });
};

Which makes it easy for you to simply Sequelize.import it.

Configuration options

For the -c, --config option the following JSON/configuration parameters are defined by Sequelize's options flag within the constructor. For more info:

https://sequelize.readthedocs.org/en/latest/api/sequelize/

Programmatic API

var SequelizeAuto = require('sequelize-gen')
var auto = new SequelizeAuto('database', 'user', 'pass');

auto.run(function (err) {
  if (err) throw err;

  console.log(auto.tables); // table list
  console.log(auto.foreignKeys); // foreign key list
});

Testing

You must setup a database called sequelize_auto_test first, edit the test/config.js file accordingly, and then enter in any of the following:

# for all
npm run test

# mysql only
npm run test-mysql

# postgres only
npm run test-postgres

# postgres native only
npm run test-postgres-native

# sqlite only
npm run test-sqlite
1.3.1

10 years ago

1.3.0

10 years ago

1.2.1

10 years ago

1.2.0

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago