go/pgutil/README.md
2024-11-11 06:36:55 +01:00

943 B

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: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