@giogaspa/fastify-multitenant-cli v0.1.2
:construction: @giogaspa/fastify-multitenant-cli :construction:
Command line tools for Fastify Multitenant Plugin.
Status
Pre-alpha.
This is a work in progress, please look at the develop branch for ongoing development.
Install
npm install @giogaspa/fastify-multitenant-cli --globalUsage
@giogaspa/fastify-multitenant-cli offers a command line interface for your Fastify multitenant project
based on @giogaspa/fastify-multitenant package. In order to use this package also intall @giogaspa/fastify-multitenant
$ multitenantWill print an help:
Multitenant command line interface, available commands are:
* setup:admin create admin migrations table and tenants table
* setup:tenant create tenant
* create:admin create an admin migration
* create:tenant create a tenant migration
* list list all registered tenant
* migrate:admin run all admin missing migrations
* migrate:tenant run all tenant missing migrations
* version the current fastify-multitenant-cli version
* help help about commandsLaunch multitenant help [command] to know more about the commands.
ENV
Set these environment variables to customize how the CLI works.
FASTIFY_MULTITENANT_DB_CONNECTION_URL="mysql://janedoe:mypassword@localhost:3306/mydb"
FASTIFY_MULTITENANT_FOLDER="migrations"
FASTIFY_MULTITENANT_ADMIN_FOLDER="admin"
FASTIFY_MULTITENANT_TENANT_FOLDER="tenants"| property | description | default value |
|---|---|---|
| FASTIFY_MULTITENANT_DB_CONNECTION_URL | Admin database connection string | |
| FASTIFY_MULTITENANT_FOLDER | Migrations folder name | migrations |
| FASTIFY_MULTITENANT_ADMIN_FOLDER | Admin migrations folder name | admin |
| FASTIFY_MULTITENANT_TENANT_FOLDER | Tenant migrations folder name | tenant |
Customize .env path and FASTIFY_MULTITENANT_DB_CONNECTION_URL env variable from multitenant.js file
If .env file is outside the root folder you can create multitenant.js to customize env path and admin db connection env var.
module.exports = {
envPath: './config/.env',
adminDBConnectionEnvVar: 'DATABASE_URL'
}Setup
Admin Setup
This command create migrations table and tenants table for admin database:
multitenant setup:adminTenant setup
This command add new tenant to the tenants table of admin database and also creates migrations table to the tenant database:
multitenant setup:tenant --tenant-hostname "tenant.host.tld" --tenant-connection-url "postgresql://janedoe:mypassword@localhost:5432/mydb?schema=sample"for detailed options run:
multitenant help setup:tenantMigration
Migration file is structured as code below.
db is an instance of (knex)https://knexjs.org/ library.
const MIGRATION_NAME = 'M__migrationName__';
async function up(db) {
}
async function down(db) {
}
module.exports = {
name: MIGRATION_NAME,
up,
down
}Admin migration
Create migration
multitenant create:adminRun all admin missing migrations
multitenant migrate:adminTenant migration
Create migration
multitenant create:tenantRun all tenant missing migrations
multitenant migrate:tenant --tenant-id xxxxxxxxUse the --tenant-id "*" option to run all missing migrations for all tenants registered in the admin table.
List
Show all tenants inside the admin database
multitenant migrate:admin