Composite primary keys
Storing the key as a list, with no singular field beside it, forced every path that only handles one column to say so. One of them was deleting the whole table.
Storing the key as a list, with no singular field beside it, forced every path that only handles one column to say so. One of them was deleting the whole table.
I resisted narrowing find results, because a narrowed row is no longer the entity. Then I upgraded every project I maintain and none of them needed the entity back.

UQL 0.3 ships native semantic search across PostgreSQL, MariaDB, SQLite, and MongoDB Atlas, with automatic index migration.

The annotation is now checked against the property it describes, which legacy decorators could never do. It cost three decorators, parameter injection, and NestJS compatibility.
Three ways I measured per-request allocation wrong before I got one I trusted, and why the result isn't the leak table it looks like.

Six ORMs, one full PostgreSQL lifecycle, timed per step. Prisma comes fifth of six, and one step is responsible for most of it.

npm i uql-orm installs one package and nothing else. Getting there meant deleting a 1.8 MB transpiler, a 264 KB metadata polyfill, and the sourcemaps nobody read.

Pure SQL generation speed across 7 TypeScript ORMs and query builders, measured with an open, reproducible benchmark.

What makes a perfect ORM? I evaluated the top 5 features every TypeScript ORM should have, and why the existing ones fall short.