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

@pangaea-holdings/pg-simple-migrate

v0.1.0-beta4

Published

A plain sql database migration tool for postgresql.

Downloads

223

Readme

pg-simple-migrate

A plain sql database migration tool for postgresql.

Features

  • Plain sql based migrations
  • Supports rollbacks and tagged releases
  • DB mirgation state tracked in database table
  • Atomic migrations, either they all succeed or nothing is written

oclif Version Downloads/week

Installation

yarn add @pangaea-holdings/pg-simple-migrate

Update package.json scripts

{
  "dependencies": {
    "@pangaea-holdings/pg-simple-migrate": "^0.1.0",
  },
  "scripts": {
    "migrate": "pg-simple-migrate"
  }
}

By adding migrate to scripts you can now access via yarn migrate [CMD]

Creating Migration Tables

pg-simple-migrate requires two tables, migrations migration_releases to be created to track migration state.

✅ Ensure that a valid DATABASE_URL env variable exists (ENV variables automatically loaded from .env)

ex: postrgesql://user:password@localhost:5432/db_name

yarn migrate install

Creating a migration

yarn migrate make

This will create two migration files <TIMESTAMP>__<NAME>.sql and <TIMESTAMP>__<NAME>__rollback.sql.

Running migrations

The most basic usage looks for all migrations in the migrations-folder and runs them in order of name (excluding files ending in __rollback.sql)

yarn migrate up

Tagging release

Every time a yarn migrate up is run in production it's best practice to supply a --release <GIT SHA TAG> to tag the release. This way the system can figure out

Rollbacks

Rollback the last set of migrations

yarn migrate rollback

Rollback migrations to the state of a specific release

yarn migrate rollback --tag <GIT SHA>

Commands

install

yarn migrate install

Creates the migration table

USAGE
  $ yarn migrate install

OPTIONS
  -m, --migrations-folder=migrations-folder  [default: ./db/migrations]
  -v, --verbose                              Show debug information
  --db-url=db-url                            Postgres URL (default env
                                             DATABASE_URL)

make

yarn migrate make

Make a new migration

USAGE
  $ yarn migrate make

OPTIONS
  -h, --help                             show CLI help
  -n, --name=name                        migration name
  --migrations-folder=migrations-folder  [default: ./db/migrations]

up

yarn migrate up

Runs migrations

USAGE
  $ yarn migrate up

OPTIONS
  -f, --file=file                            Specify a specific migration file
                                             to run [NOT RECOMMENDED IN
                                             PRODUCTION]

  -m, --migrations-folder=migrations-folder  [default: ./db/migrations]

  -v, --verbose                              Show debug information

  --db-url=db-url                            Postgres URL (default env
                                             DATABASE_URL)

  --dry-run                                  Don't execute migration, pretend
                                             only

  --release=release                          Associate all migrations to be run
                                             with a release tag (ex: git commit
                                             sha)

rollback

yarn migrate rollback

Rolls back migrations, if supplied with no options rolls back last "batch" of migrations

USAGE
  $ yarn migrate rollback

OPTIONS
  -m, --migrations-folder=migrations-folder  [default: ./db/migrations]
  -v, --verbose                              Show debug information

  --db-url=db-url                            Postgres URL (default env
                                             DATABASE_URL)

  --dry-run                                  Don't execute migration, pretend
                                             only

  --no-prompt                                Do not prompt for confirmation of
                                             rollback

  --num-batches=num-batches                  [default: 1]

  --release=release                          Rollback all migrations after a
                                             specific release tag