@puti94/sequelize-auto
Automatically generate bare sequelize models from your database.
Last updated 16 hours ago by xiegq .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @puti94/sequelize-auto 
SYNC missed versions from official npm registry.

Sequelize-Auto

Greenkeeper badge

Build Status Build status Dependency Status Code Climate Test Coverage

Automatically generate models for SequelizeJS via the command line.

Install

npm install -g @puti94/sequelize-auto

Prerequisites

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

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 mssql

Usage

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

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
  -T, --skip-tables Comma-separated names of tables to skip
  -C, --camel       Use camel case to name models and fields
  -n, --no-write    Prevent writing the models to disk.
  -s, --schema      Database schema from which to retrieve tables
  -z, --typescript  Output models as typescript with a definitions file.

Example

sequelize-auto -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: 1*/
module.exports = function (sequelize, DataTypes) {
	const Model = sequelize.define('sysRole', {
    roleId: {
			type: DataTypes.BIGINT,
			allowNull: false,
			primaryKey: true,
			autoIncrement: true,
			field: 'role_id'
		},
		roleName: {
			type: DataTypes.STRING(100),
			comment: '角色名称',
			field: 'role_name'
		},
		remark: {
			type: DataTypes.STRING(100),
			comment: '备注'
		},
		createUserId: {
			type: DataTypes.BIGINT,
			comment: '创建者ID',
			field: 'create_user_id'
		},
		createTime: {
			type: DataTypes.DATE,
			comment: '创建时间',
			field: 'create_time'
		},
		deptId: {
			type: DataTypes.BIGINT,
			comment: '部门ID',
			field: 'dept_id'
		}
	}, {
		tableName: 'sys_role',
		comment: '角色'
	});
	Model.associate = function (models) {
	//  Model.hasMany(models.xx, {sourceKey: "xx", foreignKey: "xx"});
	};
	return Model;
};

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 {AutoSequelize} = require('@puti94/sequelize-auto')
var auto = new AutoSequelize('database', 'user', 'pass');

auto.prepare().then(()=> {
  console.log(auto.tables); // table list
  console.log(auto.foreignKeys); // foreign key list
  
  // 可以使用这个方法自动调用 注入 models
  auto.initModels();
  
  auto.outputFiles().then(()=>console.log('success'))
});

//With options:
var auto = new SequelizeAuto('database', 'user', 'pass', {
    host: 'localhost',
    dialect: 'mysql'|'mariadb'|'sqlite'|'postgres'|'mssql',
    directory: false, // prevents the program from writing to disk
    port: 'port',
    additional: {
        timestamps: false
        //...
    },
    tables: ['table1', 'table2', 'table3']
    //...
})

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

Projects Using Sequelize-Auto

Current Tags

  • 0.2.6                                ...           latest (16 hours ago)

7 Versions

  • 0.2.6                                ...           16 hours ago
  • 0.2.5                                ...           6 days ago
  • 0.2.2                                ...           7 days ago
  • 0.2.1                                ...           7 days ago
  • 0.2.0                                ...           8 days ago
  • 0.1.1                                ...           10 days ago
  • 0.1.0                                ...           10 days ago
Maintainers (1)
Downloads
Today 0
This Week 10
This Month 75
Last Day 10
Last Week 45
Last Month 0
Dependencies (5)
Dev Dependencies (16)
Dependents (0)
None

Copyright 2014 - 2017 © taobao.org |