npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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