# pgutil ## Transactions Simplify postgres transactions using `WithTx` for serializable transactions, or `WithTxDefault` for the default isolation level. Use the `SerialTxRunner` type to get automatic retries of serialization errors. ## Migrations Put your migrations into a directory, for example `migrations`, ordered by name (YYYY-MM-DD prefix, for example). Embed the directory and pass it to the `Migrate` function: ```Go //go:embed migrations var migrations embed.FS func init() { Migrate(db, migrations) // Check the error, of course. } ``` ## Testing In order to test this packge, we need to create a test user and database: ``` sudo su postgres psql CREATE DATABASE test; CREATE USER test WITH ENCRYPTED PASSWORD 'test'; GRANT ALL PRIVILEGES ON DATABASE test TO test; use test GRANT ALL ON SCHEMA public TO test; ``` Check that you can connect via the command line: ``` psql -h 127.0.0.1 -U test --password test ```