# seagull
## Getting Started The basic workflow is as follows: 1. `seagull init` ``` # seagull.toml ``` ## Commands ### seagull init creates a `seagull.toml` file for storing connection strings and other config values. This file is optional, you can use the other commands without it. ### seagull poop firstly creates a directory named `migrations` if one does not already exist. Secondly creates an empty `.sql` file in the format `V{1}__{2}.sql` where `{1}` is an auto-incremented version number and `{2}` is a description. ```bash USAGE # creates ./migrations/V1__initial.sql $ seagull poop initial # creates ./migrations/V1_create_users_table.sql $ seagull poop "create users table" # creates ./migrations/V2_another_migration.sql assuming V1 exists $ seagull poop another_migration ``` ### seagull migrate firstly creates a database table named `__migration_history` if one does not already exist. Runs all migrations in the `migrations` directory in a single transaction. If one fails, they all fail and the database is rolled back. ```bash USAGE # reads config from seagull.toml $ seagull migrate # specify your PostgreSQL connection string $ seagull migrate --database postgresql://postgres:mysecretpassword@localhost/postgres # looks for migrations in src/migrations $ seagull migrate --dir src/migrations ``` ### seagull remigrate Same as `seagull migrate` except that it will firstly reset the whole database before running all migrations. Useful for development if you're using a Docker database and changing migrations often. **Would NOT suggest running it on production!** :skull_and_crossbones: ```bash # reads config from seagull.toml $ seagull remigrate # specify your PostgreSQL connection string $ seagull remigrate --database postgresql://postgres:mysecretpassword@localhost/postgres # looks for migrations in src/migrations $ seagull remigrate --dir src/migrations ```