kanel
tsql
kanel | tsql | |
---|---|---|
10 | 3 | |
799 | 11 | |
- | - | |
9.0 | 6.8 | |
7 days ago | 8 months ago | |
TypeScript | TypeScript | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
kanel
-
Witch – macOS window switcher replacement
I'll just quickly plug Kanel (https://github.com/kristiandupont/kanel) which I use to generate Typescript types from a Postgres database. I agree with the author to think migrations-first, though I prefer to write them in SQL to ensure I can utilize all the powerful features that Postgres has to offer.
With it, I only get types for the tables and views etc., so any join will be untyped if done client-side. This is still a big win in my opinion, and I much prefer it to normal ORM's.
-
Kysely: TypeScript SQL Query Builder
I made a tool that generates Typescript types out of a live Postgres database. I've had a request for Kysely support (https://github.com/kristiandupont/kanel/issues/273), but I more or less forgot about it. I would love to hear if that would be helpful.
-
Is it possible to create a dynamic type/interface from API response
There are tools that will generate typescript types from a database. I made one for Postgres. But it also works at "compile time", i.e. it doesn't look at a live database. I am not sure if that is what you are asking?
-
Objection to ORM Hatred
That's interesting. I use Knex a lot and I agree that it's very easy to end up just writing what is basically an ORM on the spot. I haven't quite decided if I think it's a real problem though.
I created and use Kanel (https://github.com/kristiandupont/kanel) to generate Typescript types from my Postgres database which helps a lot. Knex itself has some attempt at type safety but it gets confused quite quickly, so that's where it's tempting to override things.
-
This package is so underrated.
Interesting. Someone asked me if I supported it in Kanel. At the time it was hard to extend Kanel and then I just forgot but perhaps I should take another look at it. I am not exactly overwhelmed with the types that Knex offers even though it does make an honest attempt.
-
ADVICE WANTED - Typescript PostgreSQL without ORM
I have so far found: - kanel https://github.com/kristiandupont/kanel - and pg-to-ts https://github.com/danvk/pg-to-ts
- Kanel – Turn your Postgres schema into TypeScript types
-
Podcast interview
I’ve written before about the way I let the Postgres schema act as the source of truth by generating types with Kanel (assisted by Schemalint). In addition to this, I mention a homemade framework that sort of resembles a server-side Redux. This gives me typesafe database queries that are automatically reflected all the way to the frontend. I am frequently asked to make it open source and that is still the plan. I just need to untangle it from the Submotion source code which just never seems to be high enough priority. I promise I will get around to it :-)
-
Postgres to TypeScript Interfaces and Enums
We are using Kanel[1] for this right now — is there an advantage to using this instead?
[1]: https://github.com/kristiandupont/kanel
-
Would anyone be interested in seeing a tutorial or code TS, GQL, Express, Apollo, and Postgres with no ORM?
Sure. I've been using this lib https://github.com/kristiandupont/kanel to get types from my pg database and it makes it a breeze to use raw sql + ts.
tsql
-
Kysely: TypeScript SQL Query Builder
We use in prod variant of no 1. [0]. Why? Because:
* it's extremely lightweight (built on pure, functional combinators)
* it allows us to use more complex patterns ie. convention where every json field ends with Json which is automatically parsed; which, unlike datatype alone, allows us to create composable query to fetch arbitrarily nested graphs and promoting single [$] key ie. to return list of emails as `string[]` not `{ email: string }[]` with `select email as [$] from Users` etc.
* has convenience combinators for things like constructing where clauses from monodb like queries
* all usual queries like CRUD, exists etc. and some more complex ie. insertIgnore, merge1n etc has convenient api
We resort to runtime type assertions [1] which works well for this and all other i/o; runtime type assertions are necessary for cases when your running service is incorrectly attached to old or future remote schema (there are other protections against it but still happens).
[0] https://github.com/appliedblockchain/tsql
[1] https://github.com/appliedblockchain/assert-combinators
-
Objection to ORM Hatred
Exactly. I'm happy with tsql [0] - template based, with safe sanitation, helper renderers/combinators, used in production for several years, would recommend this approach.
[0] https://github.com/appliedblockchain/tsql
-
DenoDB
Personally I prefer functional combinators like interfaces [0]. Js/ts have tagged templates which enhances those type of interfaces a lot. It gives access to full set of functionality of underlying database, not just common denominator of all used. It allows arbitrary compositions etc.
[0] https://github.com/appliedblockchain/tsql/
What are some alternatives?
pgtyped - pgTyped - Typesafe SQL in TypeScript
denodb - MySQL, SQLite, MariaDB, PostgreSQL and MongoDB ORM for Deno
pg-to-ts - Generate TypeScript interface definitions from your Postgres schema
postgres - Postgres.js - The Fastest full featured PostgreSQL client for Node.js, Deno, Bun and CloudFlare
ts-sql - A SQL database implemented purely in TypeScript type annotations.
MySQL - A pure node.js JavaScript Client implementing the MySQL protocol.
kysely - A type-safe typescript SQL query builder
trpc - 🧙♀️ Move Fast and Break Nothing. End-to-end typesafe APIs made easy.
kysely - A type-safe typescript SQL query builder [Moved to: https://github.com/kysely-org/kysely]
PostgreSQL - PostgreSQL client for node.js.
vramework
JDBI - The Jdbi library provides convenient, idiomatic access to relational databases in Java and other JVM technologies such as Kotlin, Clojure or Scala.