plantilla-node-cli
v1.0.3
Published
CLI para plantilla GS node
Downloads
27
Readme
Sequelize-auto-models
Automatically generate models for SequelizeJS via the command line.
Install
npm i -g plantilla-node-cli
Prerequisites
You will need to install the correct dialect binding globally before using sequelize-auto-models.
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-models -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-models What directory to place the models.
-i, --output-interfaces What directory to place the interfaces.
-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
plantilla-cli -h 127.0.0.1 -d db_name -u root -x 12345 -p 3306 --dialect mysql -o src/models -t users -z -i src/interfaces
Produces a file/files such as ./models/users.model.ts which looks like:
import { Model, DataTypes } from 'sequelize';
import { database } from '../config/database';
export class users extends Model {
public id:any;
public username:any;
public password:any;
public name:any;
public idlevel:any;
public email:any;
public last_access:any;
public status:any;
public attempts:any;
public setpass:any;
public lang:any;
public created_at:any;
public updated_at:any;
}
users.init({
id: {
type: DataTypes.INTEGER.UNSIGNED,
allowNull: false,
primaryKey: true,
comment: "null",
autoIncrement: true
},
username: {
type: DataTypes.STRING(255),
allowNull: false
},
password: {
type: DataTypes.STRING(255),
allowNull: false,
defaultValue: '364465d85f36a90eeba0fd6de82c8492'
},
name: {
type: DataTypes.STRING(255),
allowNull: true
},
idlevel: {
type: DataTypes.INTEGER.UNSIGNED,
allowNull: false,
defaultValue: '0'
},
email: {
type: DataTypes.STRING(255),
allowNull: false,
defaultValue: ''
},
last_access: {
type: DataTypes.DATE,
allowNull: true
},
status: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: '0'
},
attempts: {
type: DataTypes.INTEGER.UNSIGNED,
allowNull: false,
defaultValue: '0'
},
setpass: {
type: DataTypes.DATE,
allowNull: true
},
lang: {
type: DataTypes.STRING(10),
allowNull: true,
defaultValue: 'en-US'
},
created_at: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: ''
},
updated_at: {
type: DataTypes.DATE,
allowNull: true
}
}, {
sequelize: database,
tableName: 'users',
timestamps: false
}
);
Produces a file/files such as ./interfaces/users.interface.ts which looks like:
// table: users
export interface usersInterface {
id:any;
username:string;
password:string;
name?:string;
idlevel:number;
email:string;
last_access?:Date;
status:number;
attempts:number;
setpass?:Date;
lang?:string;
created_at:Date;
updated_at?:Date;
}
Typescript
Add -z to cli options or typescript: true
to programmatic options. Model usage in a ts file:
// All models, can put in or extend to a db object at server init
import * as dbTables from './models/db.tables';
const tables = dbTables.getModels(sequelize); //:dbTables.ITable
tables.Device.findAll
// Single models
import * as dbDef from './models/db.d';
const devices:dbDef.DeviceModel = sequelize.import('./models/Device');
devices.findAll