# pgchanman

> Yet another postgres db migration tool

Latest version **1.0.4** (published 2020-08-30) · MIT license · 0 weekly downloads

## Install

```sh
npm install pgchanman
pnpm add pgchanman
yarn add pgchanman
bun add pgchanman
```

Provides the command `pgchanman`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.4 |
| Published | 2020-08-30 |
| First published | 2020-08-30 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 5.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Andrew Ulrich |
| Maintainers | andrewulrich |

## Links

- npm: https://www.npmjs.com/package/pgchanman
- Repository: https://github.com/andrewfulrich/pgchanman
- Homepage: https://github.com/andrewfulrich/pgchanman#readme
- Issues: https://github.com/andrewfulrich/pgchanman/issues
- npm.io page: https://npm.io/package/pgchanman

## Dependencies (2)

- [pg](https://npm.io/package/pg.md) ^8.3.3
- [dotenv](https://npm.io/package/dotenv.md) ^8.2.0

## Recent versions

- 1.0.4 (latest) — 2020-08-30
- 1.0.3 — 2020-08-30

## README

# pgchanman

Postgres db change management tool.

## Features

- extremely simple, just write your migration scripts and run the command
- keeps track in a `migrations` table of which migration scripts have already run and does not run them again
- dotenv compatible
- migration scripts are run in a transaction with auto-rollback on error

Note: this does not support going back to a previous db version. If you want to go to a previous version, you must write a new script to migrate the current version's state to a new version which looks the same as the old version. In other words, you can't rewrite history, which may be an advantage in some situations. 

Also note, it's up to you to put in place things like [guard clauses](https://www.red-gate.com/simple-talk/sql/database-administration/using-migration-scripts-in-database-deployments/) or other pre-condition/post-condition checks IF you desire more guarantees against unexpected effects. Different people find different balances of safety, speed, and complexity.

## How to use
First set up a "migrations" folder in your project root. Put your migration scripts into this folder. 

Number all your migration scripts with a "{#}_" prefix in the order you want them to run, for example "1_initial_ddl.sql" or "2_unique_foo_constraint.sql"

Then:

`npm install pgchanman`

`npx pgchanman` or put it into an npm script. For example I have an `npm run migrate` which runs `pgchanman && postgerd -o erd.svg`

---
_Source: https://npm.io/package/pgchanman · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
