Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/johanbrandhorst/grpc-postgres
An example repo of how I like to use postgres with gRPC
https://github.com/johanbrandhorst/grpc-postgres
Last synced: 4 days ago
JSON representation
An example repo of how I like to use postgres with gRPC
- Host: GitHub
- URL: https://github.com/johanbrandhorst/grpc-postgres
- Owner: johanbrandhorst
- License: mit
- Created: 2019-04-06T09:08:11.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-10-01T15:44:06.000Z (about 2 months ago)
- Last Synced: 2024-10-30T00:33:06.748Z (18 days ago)
- Language: Go
- Homepage: https://jbrandhorst.com/post/postgres/
- Size: 491 KB
- Stars: 289
- Watchers: 6
- Forks: 42
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# grpc-postgres
An example repo of how I like to use postgres with gRPC
```
+------------------------+
| ____ ______ ___ |
| / )/ \/ \ |
| ( / __ _\ ) |
| \ (/ o) ( o) ) |
| \_ (_ ) \ ) / |
| \ /\_/ \)_/ |
| \/ //| |\\ |
| v | | v |
| \__/ |
| |
+------------------------+
```
Source: [Charles Clavadetscher](https://www.postgresql.org/message-id/57386570.8090703%40swisspug.org)## Usage
First, start a postgres container:
```bash
$ 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:
```bash
$ 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](https://github.com/fullstorydev/grpcui/)!![gRPCUI](./grpcui.png)
## 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
* `go` > 1.21
### Making changes
After making any changes to the proto file or the migrations, make sure to
regenerate the files:```bash
$ 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`.