Synor CLI
CLI for Synor - Database Schema Migration Tool
Installation
using yarn
:
yarn add --dev @synor/cli @synor/core
using npm
:
npm install --save-dev @synor/cli @synor/core
Configuration
Synor CLI reads config file from one of the following locations:
- File path passed to
--config
or-c
flag .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',
},
}
Commands
synor completion
synor completion:generate
synor current
synor drop
synor help [COMMAND]
synor info
synor migrate [TARGETVERSION]
synor repair
synor validate
synor completion
completion plugin
USAGE
$ synor completion
OPTIONS
-s, --shell=bash|fish|zsh (required) Name of shell
EXAMPLE
$ synor completion --shell zsh
See code: oclif-plugin-completion
synor completion:generate
generates completion script
USAGE
$ synor completion:generate
OPTIONS
-s, --shell=bash|fish|zsh (required) Name of shell
EXAMPLE
$ synor completion:generate --shell zsh
See code: oclif-plugin-completion
synor current
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
synor drop
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
synor help [COMMAND]
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
synor info
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
synor migrate [TARGETVERSION]
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
synor repair
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
synor validate
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