Skip to content

Latest commit

 

History

History
115 lines (82 loc) · 3.95 KB

File metadata and controls

115 lines (82 loc) · 3.95 KB

Problem Statement

When running a multi-tenant application i.e. one one databse per tenant, it is hard to manage database structure of each tenant database seperately. Altough Sequelize provide us with a great option of migrations & seeders but it does not support the multi-tenant option out the box because every system can have a different approach to implement multi-tenancy.

Solution

This package is a cli base wrapper written on the top of the sequelize cli.

Supported Usecase

Following use case are supported for now:

  1. You need to have a master database where we need a table named as "tenants" with the following columns: username, password, db, host. You need to have the information decsribed above for every tenant database. You can clone this repo and run npm install.

More will be added soon...


migration-cli

  • 🚀 Supports sequelize commands out of the box
  • 🤯 Supports mysql, Postgres, Microsoft SQL Server, Sqlite, mariadb
  • 📟 Sequelize cli output reporting

Install

# Clone this repo:
git clone https://github.com/MJunaidAhmad/multitenant-migration-cli.git

# Run this command in the clonned folder:
node index.js help

Usage

node index.js <command> [--option]

Commands

run         Run the Sequelize command provided in the option
help        Show help

Options

    --db, --d       To specify the database from where we need to load tenant information. Supported values test,
                    development or production as defined in the config/config.js
--command, --c      To specify the sequelize command to run. For now, supported value are:
			'db:migrate'
                    'db: migrate: undo'
                    'db: migrate: undo: all'
                    'db: seed: all'
                    'db: seed: undo'
                    'db: seed: undo: all'

Examples

node index.js run --db 'development' --command 'db:migrate'
But in a real world scenario you may want to create a migration first using sequelize-cli e.g. sequelize migration:create --name 	     sometablename

CLI Help

# Display the help data.
    node index.js help

## Changelog

Soon to be updated!


Roadmap

  1. Support better error handling.
  2. Run a migration to only specified tenant rather than every tenant.
  3. Advance options for migrations e.g storage, dialect options.
  4. Migration status of every tenant i.e. how many migrations have been run on this tenants.
  5. Support --to (sequelize-cli) option for migrations & seeders.
  6. Support --except (custom) option for running migrations except specified tenants.
  7. Support to load tenants credentials from json file, api or redis rather than database.
  8. Support to check if every database is up to date with migrations.

Feel free to create an issue if you have something in your mind related to this package.


## License & Conduct

Sources

  1. Sequelize CLI

Connect

GitHub @mjunaidahmad (follow)

Twitter @junaidahnmad_12 (follow)

LinkedIn @JunaidAhmad (connect) On the LinkedIn profile y'all