npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

db-migrate-cli

v1.0.22

Published

A CLI tool for managing database migrations

Downloads

127

Readme

db-migrate-cli

npm npm

db-migrate-cli is a command-line tool for managing database migrations with MySQL and MariaDB. It simplifies creating, applying, and rolling back database changes using SQL files.

Tested With

  • Node.js 20.10.0 or greater

Table of Contents

Installation

Install globally via npm:

npm install -g db-migrate-cli

This makes the db-cli command available system-wide.

Usage

🚀 Quick Start

Get up and running with db-migrate-cli in just a few simple steps! Here's how you can manage your database migrations like a pro.

1. Setup Your Migration Configuration

db-cli setup
  • 📝 Creates config/migration.js.
  • 🔧 Customize migrationDir and database settings in this file.

Example:

db-cli setup

# Output:
# Configuration file created at config/migration.js

2. Initialize Migration Infrastructure

db-cli migrate:init
  • ⚙️ Creates db_migrations table and necessary stored procedures in your database.

Example:

db-cli migrate:init

# Output:
# Migration infrastructure initialized. 'db_migrations' table created.
# Procedures 'addMigration', 'deleteMigration', 'getLastBatchMigrations', and 'getMigrations' created.

3. Create Your First Migration

db-cli make:migration <migration_name>
  • 📁 Creates a migration file in migrationDir with a timestamp and name in snake case.

Example:

db-cli make:migration create_users_table

# Output:
# Migration file created: 2024_08_09_13_59_01_create_users_table.sql

4. Apply Migrations

db-cli migrate
  • ✅ Executes all pending migrations.

Example:

db-cli migrate

# Output:
# Migrating: 2024_08_09_13_59_01_create_users_table.sql
# Migrated: 2024_08_09_13_59_01_create_users_table.sql

5. Rollback Changes

db-cli rollback
  • ⏪ Reverts the most recent batch of migrations.

Example:

db-cli rollback

# Output:
# Rollback: 2024_08_09_13_59_01_create_users_table.sql

SQL-Based Migrations

db-migrate-cli uses SQL files for migrations, with UP for applying changes and DOWN for rolling back. This gives you full control over the SQL executed.

Anatomy of a Migration File:

-- migrations/2024_08_09_13_59_01_create_users_table.sql

-- UP
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    age INT
);

-- DOWN
DROP TABLE users;

Each migration file is written in SQL and includes two sections:

  • UP: Contains the SQL commands that apply the changes (e.g., creating tables, adding columns).
  • DOWN: Contains the SQL commands that reverse the changes (e.g., dropping tables, removing columns).

This approach gives you precise control over the SQL executed during migration and rollback processes. By using raw SQL for migrations, you directly manage your database schema changes without abstraction layers.

Commands

  • setup: Initializes migration configuration.
db-cli setup
  • migrate:init: Sets up migration infrastructure in the database.
db-cli migrate:init
  • make:migration <migration_name>: Creates a new migration file.
db-cli make:migration <migration_name>
  • migrate: Applies all pending migrations.
db-cli migrate
  • rollback: Reverts the most recent migrations.
db-cli rollback

Configuration

Edit config/migration.js after running db-cli setup:

module.exports = {
  migrationDir: 'migrations',  // Directory where migration files are stored

  // Database connection settings
  db: {
    host: 'localhost',         // Database host
    user: 'root',              // Database user
    password: 'password',      // Database password
    database: 'my_database',   // Database name
    port: 3306                 // (Optional) Default is 3306
  }
};

Dependencies

  • chalk: Used for styling terminal output.
  • commander: Command-line argument parser.
  • fs.promises: Promises API for interacting with the filesystem.
  • mysql2: MySQL client for Node.js.
  • path: Utility for handling and transforming file paths.

License

MIT License

Author

Developed by Anjutech ([email protected]).