pggen
Our great sponsors
pggen | bazel-postgres-sketch | |
---|---|---|
2 | 2 | |
58 | 3 | |
- | - | |
0.6 | 0.0 | |
about 1 month ago | over 2 years ago | |
Go | Shell | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
pggen
-
We Went All in on Sqlc/Pgx for Postgres and Go
If you want a code generator like this that has support for that kind of thing, https://github.com/opendoor/pggen can automatically infer these kinds of relationships based on foreign key relationships and emit slices of pointers to connect the records together in memory. It can even figure out 1-1 relationships if there is a UNIQUE index on the foreign key. There is a little mini-DSL for specifying exactly how much of the transitive closure of a given record you want to get filled in for you.
bazel-postgres-sketch
-
We Went All in on Sqlc/Pgx for Postgres and Go
I uploaded most of our Workspace setup here: https://github.com/jschaf/bazel-postgres-sketch. The tooling is a bunch of Go to manage the Postgres process. Basically, give it schema files and receive a running database with a tear down command.
We make temp instances of Postgres quickly by:
- avoiding Docker, especially on Mac
- keeping the data dir on tmpfs
- Disable initdb cleanup
- Disable fsync and other data integrity flags
- Use unlogged tables.
- Use sockets instead of TCP localhost.
For a test suite, it was 12x faster to call createdb with the same Postgres cluster for each test than than to create a whole new db cluster. The trick was to create a template database after loading the schema and use that for each createdb call.
-
In Praise of PostgreSQL
Sure, here's sketch of how it works: https://github.com/jschaf/bazel-postgres-sketch
What are some alternatives?
pggen - Generate type-safe Go for any Postgres query. If Postgres can run the query, pggen can generate code for it.
goyesql - Parse SQL files with multiple named queries and automatically prepare and scan them into structs.
sqlparser-rs - Extensible SQL Lexer and Parser for Rust
pike - Generate CRUD gRPC backends from single YAML description.
goqu - SQL builder and query library for golang
better-sqlite3 - The fastest and simplest library for SQLite3 in Node.js.
sqlite
proteus - A simple tool for generating an application's data access layer.
gnorm - A database-first code generator for any language
SQLBoiler - Generate a Go ORM tailored to your database schema.
pronto - Protobuf ORM