Common database scripts. These scripts require a postgres db container to be running. You can start these here infra-le-local-dev
See example PR, or follow instructions below:
yarn add -D @luxuryescapes/lib-db
You can optionally create a file called .lib-db.config
to specify configuration
This file format should be key value like below
APP_NAME=my_app
TEST_HEROKU_APP_NAME=my_heroku_app_name
DB_CONTAINER=postgres13
EXCLUDE_TABLES="big_table;big_table_2;personal\*"
Easiest way is to use in your repository's npm scripts
{
"scripts": {
"db:pull:test": "lib-db heroku-pull-test my_app my_heroku_app_name"
}
}
Note: If the DB you are backing up is large, please consider using the heroku-capture-test, heroku-backup-test & heroku-restore-test commands instead.
lib-db heroku-pull-test <app_name> <heroku_app_name>
This script will pull down the database from the specified heroku app into a database called <app_name>_development
So for example if you do the following
lib-db heroku-pull-test svc_users test-svc-users
It will pull down the database from the heroku app named test-svc-users
into a local db named svc_users_development
You can omit the arguments if you have APP_NAME
and TEST_HEROKU_APP_NAME
defined in your .lib-db.config
file
You can omit table data by setting the EXCLUDE_TABLES
env var in .lib-db.config
this is a ;
seperated list of table names. Make sure you quote this list so the ;
character is escaped. If you are using a wildcard *
this will need to be explicitly escaped
lib-db heroku-pull-prod <app_name> <heroku_app_name>
This script just prints an error at the moment
lib-db heroku-capture-test <app_name> <heroku_app_name>
This script will generate a manual backup in heroku for downloading.
lib-db heroku-backup-test <app_name> <heroku_app_name>
This script will download a backup of the database from the specified heroku app.
lib-db heroku-restore-test <app_name> <heroku_app_name>
This script will restore a backup of the database of the specified heroku app that is stored in your local container. Please run heroku-backup-test
first to download the backup.
lib-db create <app_name>
Will create your db named <app_name>_development
You can omit the argument if you have APP_NAME
defined in your .lib-db.config
file
If you want to create a db for a different environment use the env var APP_ENV
e.g running APP_ENV=spec lib-db create my_app
will create a db named my_app_spec
lib-db drop <app_name>
Will drop your db named <app_name>_development
You can omit the argument if you have APP_NAME
defined in your .lib-db.config
file
If you want to drop a db for a different environment use the env var APP_ENV
e.g running APP_ENV=spec lib-db drop my_app
will drop a db named my_app_spec
lib-db schema <app_name>
Will export the schema of db named <app_name>_development
to repo/schema.sql
You can omit the argument if you have APP_NAME
defined in your .lib-db.config
file
If you want to export the schema for a db for a different environment use the env var APP_ENV
e.g running APP_ENV=spec lib-db schema my_app
will export the schema from the db named my_app_spec
Alternatively you can define a different location using the REPO_DIRECTORY
in your .lib-db.config
file
lib-db snapshot <app_name>
Will snapshot your db named <app_name>_development
into <app_name>_development_snapshot
You can omit the argument if you have APP_NAME
defined in your .lib-db.config
file
lib-db snapshot-restore <app_name>
Will restore your snapshot in <app_name>_development_snapshot
into <app_name>_development
You can omit the argument if you have APP_NAME
defined in your .lib-db.config
file
lib-db migrate-create <migration_name> <app_name>
This will create a migration sql file. By default it will put it in the migrations
folder within the repo
folder which is relative to where you ran the command
Alternatively you can define a different location using the REPO_DIRECTORY
in your .lib-db.config
file
You can omit the app_name argument if you have APP_NAME
defined in your .lib-db.config
file
lib-db heroku-pull-test-no-docker
Use this command if you are not running the Postgres DB in Docker, but still want to be able to pull from the DB in test environment for you service