CLI for Synor - Database Schema Migration Tool
using yarn:
yarn add --dev @synor/cli @synor/coreusing npm:
npm install --save-dev @synor/cli @synor/coreSynor CLI reads config file from one of the following locations:
- File path passed to --configor-cflag
- .synorrc.js
- .synorrc.ts
- synor.config.js
- synor.config.ts
The first one found is used by Synor CLI.
Note: ts-node is required for loading config from .ts file
Options in config file is overridden by their available command flag counterparts.
Main Options:
| Name | Description | 
|---|---|
| databaseEngine | Database Engine function / package name / module path | 
| databaseUri | Database Engine URI | 
| sourceEngine | Source Engine function / package name / module path | 
| sourceUri | Source Engine URI | 
Other Options:
You can also specify other configuration options that Synor Core accepts.
Example:
const path = require('path')
module.exports = {
  databaseEngine: `@synor/database-mysql`,
  databaseUri: `mysql://root:root@localhost:3306/synor`,
  sourceEngine: `@synor/source-file`,
  sourceUri: `file://${path.resolve('migrations')}`,
  baseVersion: '0',
  recordStartId: 1,
  migrationInfoNotation: {
    do: 'do',
    undo: 'undo',
    separator: '.',
    extension: 'sql'
  }
}- synor current
- synor drop
- synor help [COMMAND]
- synor info
- synor migrate [TARGETVERSION]
- synor repair
- synor validate
show current migration record
USAGE
  $ synor current
OPTIONS
  -D, --databaseEngine=databaseEngine  Database Engine
  -S, --sourceEngine=sourceEngine      Source Engine
  -b, --baseVersion=baseVersion        Version of the Base Migration
  -c, --config=config                  Configuration file path
  -d, --databaseUri=databaseUri        Database URI
  -i, --recordStartId=recordStartId    Migration Record Start ID
  -s, --sourceUri=sourceUri            Source URI
  --columns=columns                    only show provided columns (comma-separated)
  --no-header                          hide table header from output
DESCRIPTION
  This record indicates the current migration version for the database.
EXAMPLES
  $ synor current
  $ synor current --no-header --columns version
See code: src/commands/current.ts
drop database
USAGE
  $ synor drop
OPTIONS
  -D, --databaseEngine=databaseEngine  Database Engine
  -S, --sourceEngine=sourceEngine      Source Engine
  -b, --baseVersion=baseVersion        Version of the Base Migration
  -c, --config=config                  Configuration file path
  -d, --databaseUri=databaseUri        Database URI
  -i, --recordStartId=recordStartId    Migration Record Start ID
  -s, --sourceUri=sourceUri            Source URI
DESCRIPTION
  This command is DANGEROUS.
  Drops everything in the database.
  It should only be used for development purposes.
EXAMPLE
  $ synor drop
See code: src/commands/drop.ts
display help for synor
USAGE
  $ synor help [COMMAND]
ARGUMENTS
  COMMAND  command to show help for
OPTIONS
  --all  see all commands in CLI
See code: @oclif/plugin-help
show migration information
USAGE
  $ synor info
OPTIONS
  -D, --databaseEngine=databaseEngine  Database Engine
  -S, --sourceEngine=sourceEngine      Source Engine
  -b, --baseVersion=baseVersion        Version of the Base Migration
  -c, --config=config                  Configuration file path
  -d, --databaseUri=databaseUri        Database URI
  -i, --recordStartId=recordStartId    Migration Record Start ID
  -s, --sourceUri=sourceUri            Source URI
  -x, --extended                       show extra columns
  -z, --outOfOrder                     include out of order pending migrations
  --columns=columns                    only show provided columns (comma-separated)
  --filter=filter                      filter property by partial string matching, ex: name=foo
  --no-header                          hide table header from output
DESCRIPTION
  Shows detailed information about schema migrations.
EXAMPLES
  $ synor info
  $ synor info --outOfOrder
  $ synor info --no-header --columns version --filter state=pending
See code: src/commands/info.ts
migrate database to specific version
USAGE
  $ synor migrate [TARGETVERSION]
ARGUMENTS
  TARGETVERSION  target migration version
OPTIONS
  -D, --databaseEngine=databaseEngine  Database Engine
  -S, --sourceEngine=sourceEngine      Source Engine
  -b, --baseVersion=baseVersion        Version of the Base Migration
  -c, --config=config                  Configuration file path
  -d, --databaseUri=databaseUri        Database URI
  -f, --from=from                      from migration version
  -i, --recordStartId=recordStartId    Migration Record Start ID
  -s, --sourceUri=sourceUri            Source URI
  -t, --to=to                          to migration version
  -z, --outOfOrder                     include out of order pending migrations
DESCRIPTION
  Runs necessary migrations to reach the target migration version.
EXAMPLES
  $ synor migrate 42
  $ synor migrate --from=00 --to=42
  $ synor migrate 42 --outOfOrder
See code: src/commands/migrate.ts
repair migration records
USAGE
  $ synor repair
OPTIONS
  -D, --databaseEngine=databaseEngine  Database Engine
  -S, --sourceEngine=sourceEngine      Source Engine
  -b, --baseVersion=baseVersion        Version of the Base Migration
  -c, --config=config                  Configuration file path
  -d, --databaseUri=databaseUri        Database URI
  -i, --recordStartId=recordStartId    Migration Record Start ID
  -s, --sourceUri=sourceUri            Source URI
DESCRIPTION
  - Updates the mismatched hashes
  - Deletes the dirty records
EXAMPLE
  $ synor repair
See code: src/commands/repair.ts
validate migration records
USAGE
  $ synor validate
OPTIONS
  -D, --databaseEngine=databaseEngine  Database Engine
  -S, --sourceEngine=sourceEngine      Source Engine
  -b, --baseVersion=baseVersion        Version of the Base Migration
  -c, --config=config                  Configuration file path
  -d, --databaseUri=databaseUri        Database URI
  -i, --recordStartId=recordStartId    Migration Record Start ID
  -s, --sourceUri=sourceUri            Source URI
  -x, --extended                       show extra columns
DESCRIPTION
  Validates the records for migrations that are currently applied.
EXAMPLE
  $ synor validate
See code: src/commands/validate.ts