I created this new library that parses Postgres SQL inside TypeScript’s type system. You write a SQL string and the compiler infers the row and parameter types. It needs no codegen and no database connection.

const q = sql(`SELECT u.id, u.email, p.title
               FROM users u LEFT JOIN posts p ON p.author_id = u.id
               WHERE u.id = ${sql.param(7)}`);
// { id: number; email: string; title: string | null }

sql("SELECT nme FROM users");
// error: column "nme" does not exist
  • Handles joins, CTEs, subqueries, window functions, INSERT/UPDATE/DELETE … RETURNING
  • Runs on pg or postgres.js, and can reuse your existing Kysely, Drizzle or Prisma schema
  • Requires TypeScript 7

https://github.com/ismailkarsli/typesql

Feedback welcome, especially queries that don’t type-check but should.

    • Cellery@quokk.au
      link
      fedilink
      English
      arrow-up
      7
      arrow-down
      2
      ·
      4 days ago

      It’s just so they can get dependencies out in the wild and then they add malicious code. This is why we should all learn to code… simply so we can stop being lazy and write our own is_even functions.