jorasmhj / db-mongo-migration

Mongo migration Library
MIT License
7 stars 2 forks source link

Db-Mongo-Migration

[![Coverage Status](https://coveralls.io/repos/github/jorasmhj/db-mongo-migration/badge.svg?branch=master)](https://coveralls.io/r/jorasmhj/db-mongo-migration) [![NPM](https://img.shields.io/npm/v/db-mongo-migration.svg?style=flat)](https://www.npmjs.org/package/db-mongo-migration) [![Downloads](https://img.shields.io/npm/dm/db-mongo-migration.svg?style=flat)](https://www.npmjs.org/package/db-mongo-migration) [![Known Vulnerabilities](https://snyk.io/test/github/jorasmhj/db-mongo-migration/badge.svg)](https://snyk.io/test/github/jorasmhj/db-mongo-migration) [![BuyMeACoffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://www.buymeacoffee.com/jorasmhj) A command-line tool for running and managing MongoDB migrations.

Installation

To install Db-Mongo-Migration, run the following command:

npm i db-mongo-migration

CLI Usage

  __  __                               __  __ _                 _
 |  \/  | ___  _ __   __ _  ___       |  \/  (_) __ _ _ __ __ _| |_ ___
 | |\/| |/ _ \| '_ \ / _` |/ _ \ _____| |\/| | |/ _` | '__/ _` | __/ _ \
 | |  | | (_) | | | | (_| | (_) |_____| |  | | | (_| | | | (_| | ||  __/
 |_|  |_|\___/|_| |_|\__, |\___/      |_|  |_|_|\__, |_|  \__,_|\__\___|
                     |___/                      |___/
Usage: mongo-migration [options] [command]

Options:
  -V, --version   output the version number
  -h, --help      display help for command

Commands:
  init            Initialize migration config
  create [name]   Create a migration
  status          Get migration status
  up [options]    Run migration
  down [options]  Rollback migrations
  help [command]  display help for command

Basic Usage

Initialize Migration Config

To initialize the migration config, run the following command:

npx mongo-migrate init

This will create a migration-config.yaml file in the current directory.

db-connection:
  url: ${URL}
  databaseName: ${DATABASE_NAME}
  options:
    useNewUrlParser: true
    useUnifiedTopology: true

migrationsDir: migrations
changelogCollectionName: migrations
projectName: YOUR-PROJECT-NAME
useDefaultTransaction: true

You can use .env to auto populate the environment variables

Create a Migration

To create a new migration, run the following command:

npx mongo-migrate create [name]

Replace [name] with the name of your migration. This will create a new migration file in the migrations directory.

Options

Without option -n, it will create a file with following content:

Without option -n With native support (-n) - WIP
```javascript import { IMigration, DB } from "db-mongo-migration" class Migration implements IMigration { /** * Run the migrations. */ async up(db: DB) { // YOUR CODE HERE } /** * Reverse the migrations. */ async down(db: DB) { // YOUR CODE HERE } } export default Migration; ``` ```javascript import { INativeMigration, DbSessionHelper, MongoClient } from "db-mongo-migration" import { Db } from 'mongodb'; class NativeMigration implements INativeMigration { /** * Run the migrations. */ async up(db: Db, client: MongoClient) { return await handleDbTransaction(client, async session => { // YOUR CODE HERE }); } /** * Reverse the migrations. */ async down(db: Db, client: MongoClient) { // YOUR CODE HERE } } export default NativeMigration; ```
-> System handles the entire Transaction Session -> Should pass client.globalSession to give system the control to handle the transaction session

Get Migration Status

To get the status of your migrations, run the following command:

npx mongo-migrate status

This will display a table showing the status of each migration.

Run Migrations

To run your migrations, run the following command:

npx mongo-migrate up

This will run all pending migrations.

Options

Rollback Migrations

To rollback your migrations, run the following command:

npx mongo-migrate down

This will rollback the last batch of migrations.

Options

License

This project is licensed under the MIT License - see the LICENSE file for details.