Granite doesn't have migrations built in. Instead, we leveraged the excellent work done by Juan Edi called micrate. We have integrated Micrate into the Maze CLI.
Migration scripts
Migration scripts are created in the db/migrations directory. It's recommended that the files use a timestamp as a way to keep the order of execution.
A micrate script has two sections, Up and Down. Here is an example file:
db/migrations/20171003212124_create_post.sql
-- +micrate UpCREATETABLEposts ( id BIGINTNOT NULL AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), body TEXT, pages INT, published BOOL, created_at TIMESTAMPNULL, updated_at TIMESTAMPNULL);-- +micrate DownDROPTABLEIFEXISTS posts;
Generators
Maze CLI provides the ability to generate migration scripts:
This will generate an empty micrate script with the timestamp set in the filename:
If you generate a model or scaffold, it will create a migration script that will create and drop the database table.
This will generate the migration script shown above.
Run the migrations
You can run the migrations using either:
You can rollback a migration using either:
Drop and Create a database
The maze db commmand also allows you to create and drop the database itself:
Seed the database
Sometimes you need to pre-populate your tables with data. This is common if you need an beginning administrator account or populate lookup tables that rarely change.