Serverless Sequelize Migrations
Manage Sequelize migrations on your serverless project
Serverless Sequelize Migrations
A plugin to manage sequelize migrations on serverless projects
**Features**:
- Create migration file
- List pending and executed migrations
- Apply pending migrations
- Revert applied migrations
- Reset all applied migrations
## Documentation
- [Installation](#installation)
- [Setting up Sequelize database values](#setting-up-sequelize-database-values)
- [Usage and commmand line options](#usage-and-command-line-options)
- [Credits and inspiration](#credits-and-inspiration)
- [License](#license)
## Installation
1) Add Serverless Sequelize Migrations to your project:
```
npm install --save serverless-sequelize-migrations
```
2) Inside your serverless.yml file add the following entry to the plugins section (if there is no plugin section in the file you'll need to add it):
```
plugins:
- serverless-sequelize-migrations
```
You can check whether the plugin is ready to be used through the terminal. To do so, type the following command on the CLI:
`serverless --help`
the console should display _SequelizeMigrations_ as one of the available plugins in your Serverless project.
## Setting up Sequelize
For the plugin to work correctly, you have to set the database information as environment variables on the service provider section as follows:
```
provider:
environment:
DB_DIALECT: 'database_dialect' /* one of 'mysql' | 'mariadb' | 'postgres' | 'mssql' */
DB_NAME: 'database_name'
DB_USERNAME: 'database_username'
DB_PASSWORD: 'database_password'
DB_HOST: 'database_host'
DB_PORT: 'database_port'
```
or by using DB_CONNECTION_URL
```
provider:
environment:
DB_CONNECTION_URL: database_dialect://database_username:database_password@database_host:database_port/database_name`
```
Replace the variables with the information of your own database.
Obs: This plugin does not have support to create the database itself.
As per [Sequelize docs](https://sequelize.org/v5/manual/getting-started.html), you'll have to manually install the driver for your database of choice:
```
# One of the following:
$ npm install --save pg pg-hstore # Postgres
$ npm install --save mysql2 # MySQL
$ npm install --save mariadb # MariaDB
$ npm install --save tedious # Microsoft SQL Server
```
## Usage and command line options
To see the available commands of the plugin, run `sls migrations --help` on the terminal. The following should appear:
```
migrations .................... Sequelize migrations management for Serverless
migrations create ............. Create a migration file
migrations up ................. Execute all pending migrations
migrations down ............... Rolls back one or more migrations
migrations reset .............. Rolls back all migrations
migrations list ............... Shows a list of migrations
--path / -p ........................ Specify the migrations path (default is './migrations')
--verbose / -v ..................... Shows sequelize logs
```
For any of these commands, you can specify two parameters:
- `--path` to inform the path of migrations on your project.
- `--verbose` to show sequelize execution logs during the operations.
In order to see the options of each command individually, you can run `sls migrations
--help` on the terminal.
The commands (those that have some option) and it's options are presented below:
- migrations create
```
--name / -n (required) ... Specify the name of the migration to be created
```
- migrations up
```
--rollback / -r .......... Rolls back applied migrations in case of error (default is false)
--dbDialect ........................ Specify the database dialect (one of: 'mysql', 'mariadb', 'postgres', 'mssql')
--dbHost ........................... Specify the database host
--dbPort ........................... Specify the database port
--dbName ........................... Specify the database name
--dbUsername ....................... Specify the database username
--dbPassword ....................... Specify the database password
```
- migrations down
```
--times / -t ............. Specify how many times to roll back (default is 1)
--name / -n .............. Specify the name of the migration to be rolled back (e.g. "--name create-users.js")
--dbDialect ........................ Specify the database dialect (one of: 'mysql', 'mariadb', 'postgres', 'mssql')
--dbHost ........................... Specify the database host
--dbPort ........................... Specify the database port
--dbName ........................... Specify the database name
--dbUsername ....................... Specify the database username
--dbPassword ....................... Specify the database password
```
- migrations list
```
--status / -s ............ Specify the status of migrations to be listed (--status pending [default] or --status executed)
--dbDialect ........................ Specify the database dialect (one of: 'mysql', 'mariadb', 'postgres', 'mssql')
--dbHost ........................... Specify the database host
--dbPort ........................... Specify the database port
--dbName ........................... Specify the database name
--dbUsername ....................... Specify the database username
--dbPassword ....................... Specify the database password
```
### Custom migrations path
You can also define a migrations path variable on the custom section of your project service file.
```
custom:
migrationsPath: './custom/migrations/path'
```
Important: if you inform the --path option through the CLI, this configuration will be ignored.
### Credits and inspiration
This plugin was first based on [Nevon](https://github.com/Nevon)'s [serverless-pg-migrations](https://github.com/Nevon/serverless-pg-migrations).
### License
MIT