Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hurnell/sequelise-auto
branch of https://github.com/sequelize/sequelize-auto
https://github.com/hurnell/sequelise-auto
Last synced: 29 days ago
JSON representation
branch of https://github.com/sequelize/sequelize-auto
- Host: GitHub
- URL: https://github.com/hurnell/sequelise-auto
- Owner: hurnell
- Created: 2020-05-01T07:51:46.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-12-30T20:19:04.000Z (about 2 years ago)
- Last Synced: 2023-03-06T00:21:15.122Z (almost 2 years ago)
- Language: JavaScript
- Homepage:
- Size: 956 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Sequelize-Auto
[![Greenkeeper badge](https://badges.greenkeeper.io/sequelize/sequelize-auto.svg)](https://greenkeeper.io/)
[![Build Status](http://img.shields.io/travis/sequelize/sequelize-auto/master.svg)](https://travis-ci.org/sequelize/sequelize-auto) [![Build status](https://ci.appveyor.com/api/projects/status/bf9lb89rmpj6iveb?svg=true)](https://ci.appveyor.com/project/durango/sequelize-auto) [![Dependency Status](https://david-dm.org/sequelize/sequelize-auto.svg)](https://david-dm.org/sequelize/sequelize-auto) [![Code Climate](https://codeclimate.com/github/sequelize/sequelize-auto/badges/gpa.svg)](https://codeclimate.com/github/sequelize/sequelize-auto) [![Test Coverage](https://codeclimate.com/github/sequelize/sequelize-auto/badges/coverage.svg)](https://codeclimate.com/github/sequelize/sequelize-auto/coverage)
Automatically generate models for [SequelizeJS](https://github.com/sequelize/sequelize) via the command line.
## Install
npm install -g 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 -d -u -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: 2 */
module.exports = function(sequelize, DataTypes) {
return sequelize.define('Users', {
'id': {
type: DataTypes.INTEGER(11),
allowNull: false,
primaryKey: true,
autoIncrement: true
},
'username': {
type: DataTypes.STRING,
allowNull: true
},
'touchedAt': {
type: DataTypes.DATE,
allowNull: true
},
'aNumber': {
type: DataTypes.INTEGER(11),
allowNull: true
},
'bNumber': {
type: DataTypes.INTEGER(11),
allowNull: true
},
'validateTest': {
type: DataTypes.INTEGER(11),
allowNull: true
},
'validateCustom': {
type: DataTypes.STRING,
allowNull: false
},
'dateAllowNullTrue': {
type: DataTypes.DATE,
allowNull: true
},
'defaultValueBoolean': {
type: DataTypes.BOOLEAN,
allowNull: true,
defaultValue: '1'
},
'createdAt': {
type: DataTypes.DATE,
allowNull: false
},
'updatedAt': {
type: DataTypes.DATE,
allowNull: false
}
}, {
tableName: 'Users',
freezeTableName: true
});
};Which makes it easy for you to simply [Sequelize.import](http://docs.sequelizejs.com/en/latest/docs/models-definition/#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/](https://sequelize.readthedocs.org/en/latest/api/sequelize/)
## Programmatic API
```js
var SequelizeAuto = require('sequelise-auto')
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
});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']
//...
})
```## Typescript
Add -z to cli options or `typescript: true` to programmatic options. Model usage in a ts file:
```js
// 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
```## 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
* [Sequelizer](https://github.com/andyforever/sequelizer)