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.

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.

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.