Seems very similar to [drizzle](https://orm.drizzle.team/) - although drizzle is a more mature product.
Drizzle also uses its own custom query language e.g.
.where(eq(countries.id, 10))
Whereas litdb lets you use the full expressiveness of SQL but ensures all references are typed: .where(c => $`${c.id} = 10`)
[1] https://orm.drizzle.team/docs/overviewSeems a strange design choice for a library that claims to offer a type-safe sql builder.
SELECT * from Contact where id = '1'
With that said you can achieve something similar in litdb with a custom expression: const eq = <T,V>(ref:(x:T)=>V, value:V) => (x:T) => $`${ref(x)} = ${value}`
Which will type check that the value matches the column type: .where(eq(c => c.id, 2))
and fail type check when they don't: .where(eq(c => c.id, '2'))
Examples of other custom expressions: https://litdb.dev/#composable