grpc-postgres
An example repo of how I like to use postgres with gRPC
+------------------------+
| ____ ______ ___ |
| / )/ \/ \ |
| ( / __ _\ ) |
| \ (/ o) ( o) ) |
| \_ (_ ) \ ) / |
| \ /\_/ \)_/ |
| \/ //| |\\ |
| v | | v |
| \__/ |
| |
+------------------------+
Source: Charles Clavadetscher
Usage
First, start a postgres container:
$ docker run --rm -d --name postgres -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=mypass -e POSTGRES_DB=postgres postgres:13
d1a2eb0fb44da9c3488184f5296da28d1c7f88bd32bd4ec81fc254f006886b03
Start the server:
$ POSTGRES_URL=postgresql://postgres:mypass@localhost:5432/postgres?sslmode=disable go run main.go
...
{"level":"info","msg":"Serving gRPC on [::]:8080"}
{"level":"info","msg":"Serving Web UI on http://0.0.0.0:8080"}
Navigate to http://0.0.0.0:8080 to see the auto-generated web UI for the
service, courtesy of gRPC reflection and
github.com/fullstorydev/grpcui!

Usage with Cockroach DB
The application also supports talking to a Cockroach DB instance, by using the cockroachdb
scheme:
cockroachdb://user:password@host:5432/defaultdb
The scheme is used when performing the database migrations, as the behaviour changes based on the database.
Developing
Requirements
Making changes
After making any changes to the proto file or the migrations, make sure to
regenerate the files:
$ make generate
If you want to change the schema of the database, add another migration file.
Use the same naming format, with the new file names starting 2_
. Make sure to
run make generate
and increment the migration version in users/helpers.go
.