4 ms·
If you use it with kysely-codegen, it generates the types from your DB schema, guaranteeing they match. And the strings are verified at compile time - you can’t
by yashap 3y ago
If you use it with kysely-codegen, it generates the types from your DB schema, guaranteeing they match. And the strings are verified at compile time - you can’t typo a table name, field name, etc., it won’t compile. Plus, from an ergonomics POV, it integrates very well with auto-complete.
It’s very typesafe IMO, more so than most libs that interact with the the DB, where you hand-define the schemas and can more easily make typos.
- bzzzt 3y agoI didn't go deep into the docs, but the 'movie' on the homepage clearly shows string-based field name mappings so I instantly saw that as a red flag... Nice to know it's implemented better though.
- yashap 3y agoYeah, TS has a very flexible/powerful type system. You can have a type like ‘full_name’, that can only be that exact string, or a type like ‘full_name’ | ‘id’ | ‘email’, that can only be those 3 strings, etc. Kysely takes advantage of those sorts of types.
- thangngoc89 3y agoIt’s a string but TS is crazily powerful. The generated types would verify it’s the correct string says like table_name and the columns name also matches with table_name.
- johnfn 3y agoTypeScript allows strongly typed string constants. It's actually not a red flag, it's just idiomatic TypeScript.
- a_humean 3y agoThese are literal string types. Its a feature of at least two languages that I know of: Typescript: https://www.typescriptlang.org/docs/handbook/literal-types.html https://www.typescriptlang.org/docs/handbook/literal-types.h... Scala: https://docs.scala-lang.org/sips/42.type.html https://docs.scala-lang.org/sips/42.type.html Typescript goes a step further has has things like template literal types: https://www.typescriptlang.org/docs/handbook/2/template-literal-types.html https://www.typescriptlang.org/docs/handbook/2/template-lite... They are a little bit more than string mappings, and the mapping you do see is all codegen generated from the DB schema.
- byproxy 3y agoThe only nag I have with this (and it might just be a case of me doing things wrong) is that it seems you also have to create types for tables based on the operation you want to perform by wrapping them in the `Selectable`, `Insertable`, etc. Kysely types. Kinda wish kysely-codegen created all those types along with the base table types. Otherwise, it’s been working pretty well for me so far!
- igalklebanov 3y agoIt was also requested in prisma-kysely recently. Might be a good idea to check kysely-codegen's issues section and open an issue if it wasn't requested yet.