sqlmigrate 0.2.0
sqlmigrate: ^0.2.0 copied to clipboard
A lightweight CLI for managing database migrations in Dart/Flutter projects.
sqlmigrate #
A migration tool for Dart/Flutter projects that adds support for managing database migrations in a simple and practical way. sqlmigrate can be used both via the command line and as a development dependency in your Dart/Flutter application.
Features #
- Simple CLI: Manage migrations using straightforward commands.
- Dart/Flutter Integration: Use it as a development dependency in your project.
- Flexible Configuration: Configure via
pubspec.yaml
or an external YAML file. - Initial Focus on Supabase: Currently supports PostgreSQL (with plans to add other databases in the future).
- Step-by-Step Execution: The
up
command applies one pending migration at a time, rather than all at once.
Installation #
Add sqlmigrate
as a development dependency in your Dart/Flutter project:
dev_dependencies:
sqlmigrate: ^<version>
Configuration #
Using pubspec.yaml
#
Include the migration configurations in your pubspec.yaml
file:
db_config:
production:
dialect: postgres
datasource: dbname=${DB_NAME} user=${DB_USER} password=${DB_PASSWORD} sslmode=disable
dir: migrations/postgres
table: migrations
Notes:
- db_config: Mandatory configuration block.
- production: Environment name (can be any name, such as development, test, etc.).
- dialect: Database to be used for the environment.
- datasource: Database connection specifications. For PostgreSQL, include parameters like
host=
,dbname=
,port=
,user=
,password=
, andsslmode
(options:disable
,require
, orverifyFull
). - dir: Directory where the SQL migration files are located.
- table (optional): Name of the table that will track the migrations in the database.
Using an External Configuration File #
Alternatively, you can use another YAML file for configuration (you don't need to define db_config
). For example:
development:
dialect: sqlite3
datasource: test.db
dir: migrations/sqlite3
production:
dialect: postgres
datasource: dbname=myapp sslmode=disable
dir: migrations/postgres
table: migrations
Use the --config
flag in the CLI to specify the path to this file.
CLI Usage #
The sqlmigrate
command-line interface offers the following commands:
Usage: sql-migrate <command> [arguments]
Global options:
-h, --help Prints this usage information.
-v, --version Prints the version.
Available commands:
down Undo a database migration.
new Create a new migration.
up Migrate the database to the most recent version available.
Important Flags #
--env
: Specifies the environment to use. If not provided, the CLI will use the first environment defined in your configuration.--config
: Specifies the path to an alternative configuration file (if you don't want to usepubspec.yaml
).
Migration Files Structure #
Migration SQL files must follow this format:
-- +migrate Up
create table users(id serial primary key, name varchar(255));
-- +migrate Down
drop table users;
Details:
- Up: Defines the changes to be applied to the database.
- Down: Defines how to revert the changes made by the migration.
Each file should be named following this format:
YYYYMMDDHHMMSS-migration-name.sql
For example: 20250213173434-create-schema.sql
, where create-schema
is the user-defined migration name.
Final Considerations #
- Current Support: The CLI currently supports only PostgreSQL. Support for other databases will be added in the future.
- Migration Execution: When executing the
up
command, the CLI applies only one pending migration at a time, rather than applying all pending migrations at once.
Contributions, feedback, and suggestions are welcome!
License #
This project is licensed under the MIT License.
Happy migrating!