gock
cornucopia
Our great sponsors
gock | cornucopia | |
---|---|---|
10 | 20 | |
2,014 | 686 | |
- | 10.1% | |
3.4 | 4.6 | |
3 months ago | 15 days ago | |
Go | Rust | |
MIT License | GNU General Public License v3.0 or later |
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.
gock
-
Testing calls to external APIs
Mocking the http client with explicit responses; for example using h2non/gock
- What features would you consider missing/nice to haves for backend web development in Rust?
-
Mock HTTP response
Check out gock.
- API Mock Testing Frameworks
-
Testing methods with HTTP calls?
h2non/gock and
-
Go Package for Mocking HTTP Traffic: github.com/h2non/gock
Last time I covered testing in Go I mentioned a package used for testing equality called github.com/google/go-cmp, this time I will share with you a way to mock HTTP traffic using the package github.com/h2non/gock.
-
HTTP mocking
If you need a good library for mocking http servers https://github.com/h2non/gock does a great job.
-
best way to mock/unit test http.Client?
github.com/h2non/gock
- How to mock `jwk.Fetch` in my unit tests?
- Has anyone here compiled DroneCI from scratch?
cornucopia
-
We built our customer data warehouse all on Postgres
There are multiple queries each separated by ; and on top of each query, there's a comment giving a name to the query (it's more like a header)
I think the only thing that would require specific support in postgres_lsp is using the :parameter_name syntax for prepared statements [1] (in vanilla Postgres would be something like $1 or $2, but in Cornucopia it is named to aid readability). But, if postgres_lsp is forgiging enough to not choke on that, then it seems completely fit for this use case.
[0] https://github.com/cornucopia-rs/cornucopia
[1] https://cornucopia-rs.netlify.app/book/writing_queries/writi...
-
Is ORM still an anti-pattern?
Some examples for anyone else reading:
https://github.com/kyleconroy/sqlc
https://github.com/cornucopia-rs/cornucopia
This is my preferred method of interacting with databases now.
Very flexible.
-
What ORM do you use?
I like Cornucopia. It’s a SQL-first approach, so I don’t have to worry about an ORM generating pathological queries. It’s also basically zero cost compared to directly using rust-postgres and supports both sync and async. I also like that my SQL queries end up separate from my Rust code, so it’s easy to update all the relevant queries when the schema changes.
-
What is the recommended way to implement session authorization?
Also, I moved away from SQLx due to slow compile times and now use https://github.com/cornucopia-rs/cornucopia
-
Oops, You Wrote a Database
While we're on the subject of ORM's I really like the https://github.com/cornucopia-rs/cornucopia way of doing things.
Basically write SQL in a file and code generate a function that runs the SQL for you and puts it into a struct (this one is for rust)
I think there's a library to do the same thing with typescript.
For me, the best way to talk to the database is with SQL and I don't have to learn an ORMs way of doing it.
-
Thoughts about switching from sqlx to tokio_postgres?
You can take a look at https://github.com/cornucopia-rs/cornucopia which is a thin codegen layer on top of tokio-postgres for ease of use.
-
Ormlite: An ORM in Rust for developers that love SQL
I think we have that https://github.com/cornucopia-rs/cornucopia
-
Ask HN: ORM or Native SQL?
The best solution I've ever seen is this Rust library https://github.com/cornucopia-rs/cornucopia
You write plain SQL for you schema (just a schema.sql is enough) and plain SQL functions for your queries. Then it generates Rust types and Rust functions from from that. If you don't use Rust, maybe there's a library like that for your favorite language.
Optionally, pair it with https://github.com/bikeshedder/tusker or https://github.com/blainehansen/postgres_migrator (both are based off https://github.com/djrobstep/migra) to generate migrations by diffing your schema.sql files, and https://github.com/rust-db/refinery to perform those migrations.
Now, if you have simple crud needs, you should probably use https://postgrest.org/en/stable/ and not an ORM. There are packages like https://www.npmjs.com/package/@supabase/postgrest-js (for JS / typescript) and probably for other languages too.
If you insist on an ORM, the best of the bunch is prisma https://www.prisma.io/ - outside of the typescript/javascript ecosystem it has ports for some other languages (with varying degrees of completion), the one I know about is the Rust one https://prisma.brendonovich.dev/introduction
- Anything like sqlc for Rust?
-
What features would you consider missing/nice to haves for backend web development in Rust?
Does Cornucopia satisfy this requirement?
What are some alternatives?
httpmock - HTTP mocking for Golang
sqlx - 🧰 The Rust SQL Toolkit. An async, pure Rust SQL crate featuring compile-time checked queries without a DSL. Supports PostgreSQL, MySQL, and SQLite.
gomock - GoMock is a mocking framework for the Go programming language.
metrics
go-sqlmock - Sql mock driver for golang to test database interactions
rbatis - Rust Compile Time ORM robustness,async, pure Rust Dynamic SQL
govcr - HTTP mock for Golang: record and replay HTTP/HTTPS interactions for offline testing
diesel_async - Diesel async connection implementation
httpexpect - End-to-end HTTP and REST API testing for Go.
typed-session-axum - Typed-session as axum middleware
go-txdb - Immutable transaction isolated sql driver for golang
bb8 - Full-featured async (tokio-based) postgres connection pool (like r2d2)