This crate provides a command line tool for generating schema migrations based on edits to a canonical schema file.
This crate is in an early stage of development and may not work with your schema or have unexpected behaviour—always double check the output.
# install the cli
cargo install sql-schema
# generate a schema file from existing migrations
sql-schema schema \
--schema-path ./schema/schema.sql \ # this is the default value
--migrations-dir ./schema/migrations # this is the default value
# -> writing ./schema/schema.sql
# generate a migration after editing the schema file
sql-schema migration \
--name my_new_migration \ # default is "generated_migration"
--include-down true \ # default is true if any down migration exists OR if there aren't any
--schema-path ./schema/schema.sql \ # this is the default value
--migrations-dir ./schema/migrations # this is the default value
# -> writing schema/migrations/1739486729_my_new_migration.up.sql
# -> writing schema/migrations/1739486729_my_new_migration.down.sql
- Time saver: You can generate an up and down migration for the cost of editing a schema.
- Non restrictive: You can edit the generated migrations as needed (e.g. if you need to migrate data along side a schema change).
- Minimal buy-in: You don't have to change anything about your project to start or stop using it (committing the generated schema is optional).
- Works with any SQL dialect.
- Plays nicely with other tools such as sqlc and sqlx.
- You have a dir containing migrations written in SQL using the
.sql
file extension. - The sum of all the migrations is your full database schema.
- The migration file names are sortable and follow a supported naming convention.
All code in this repository is licensed under the Apache Software License 2.0.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.