pggen
rules_nixpkgs
Our great sponsors
pggen | rules_nixpkgs | |
---|---|---|
2 | 5 | |
58 | 264 | |
- | 5.3% | |
0.6 | 9.0 | |
about 1 month ago | 5 days ago | |
Go | Starlark | |
MIT License | Apache License 2.0 |
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.
rules_nixpkgs
- Crafting container images without Dockerfiles
-
Our Roadmap for Nix
I have spent a little bit of time working on a prototype of a setup like this, and have needed to write a lot of (hacky) glue and BUILD files.
I take it you have departed quite a bit from https://github.com/tweag/rules_nixpkgs ? Are you generating BUILD.bazel files for nixpkgs, or are you doing that by hand?
-
nix-shell, but make it lovely
I'm a fan of Tweag's rules_nixpkgs for bazel: https://github.com/tweag/rules_nixpkgs
-
Bazel 5.0 LTS with the new external dependency subsystem "Bzlmod"
Check out rules_nixpkgs as another way to get hermetic python. It does require that you install Nix, but everything else is driven from the Bazel side. Works for us on Linux and macos.
-
We Went All in on Sqlc/Pgx for Postgres and Go
Cool, thanks for the link.
For what it's worth, we use rules_nixpkgs to source Postgres (for Linux and Darwin) as well as things such as C and Python toolchains, and it's been working really well. It does require that the machine have Nix installed, though, but that opens up access to Nix's wide array of prebuilt packages.
https://github.com/tweag/rules_nixpkgs
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.
bazel-skylib - Common useful functions and rules for Bazel
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
sqlc - Generate type-safe code from SQL
sqlite
goyesql - Parse SQL files with multiple named queries and automatically prepare and scan them into structs.
gnorm - A database-first code generator for any language
proteus - A simple tool for generating an application's data access layer.
SQLBoiler - Generate a Go ORM tailored to your database schema.