A scheam-first postgres cli migration tool.
go install github.com/aecsar/drift@latest
drift --helpThe way I like to work when it comes to database migrations is to have a single
schema.sql file that represents the current state of my database. I would
then update that file and run a tool to diff it against the result execution of
all pre-existing migrations. This approach presents some advantages, mainly
enabling you to see the databse state without needing to open a connection or
trying to parse existing migrations. The issue with
ariga/atlas is it don't generate some schema
objects (or require pro account?!) like triggers and functions and is simply an
overkill sometimes.
drift -name "add_users_table"
# -migrations : migration directory, default to "./migrations/"
# -schema : schema file, default to "./schema.sql"Drift uses stripe/pg-schema-diff
under the hood. It applies all existing migrations to a temporary database
using testcontainers. This mean you need to have docker to use drift.
pg-schema-diff is then used to generate the diff migration by taking the schema
content as target and temporary database as source.
Of course your schema file cannot live in the migrations directory simply because it will be treated as a migration.
- add tests