| ▲ | trollbridge 4 hours ago | |||||||
Can you describe how it's the same and how it's different than SQLx (a Rust thing)? | ||||||||
| ▲ | ilbert 4 hours ago | parent [-] | |||||||
I actually took a lot of inspiration from sqlx, which is really nice. The main differences are: - in JS/TS you don't have compile-time scripts that you can run like with Rust's macros, so you need to run a codegen command before running the type checks (disadvantage) - I had to create a TS parser that goes and finds the tagged template functions with the sql statements, while sqlx has them "for free" because sql statements are the input to the macro itself (disadvantage) - I use an in-memory Postgres (PGLite) to describe the queries, instead of requiring a running pg instance (advantage) - I don't cache the statements and codegen for now like sqlx does, something that can be added later I think they are similar in that they both substitute the dynamic params with no-ops like $1, $2, etc. before handing the sql statement to the pg's DESCRIBE function | ||||||||
| ||||||||