tsql
Knex
tsql | Knex | |
---|---|---|
3 | 95 | |
11 | 18,758 | |
- | 0.7% | |
6.8 | 7.9 | |
8 months ago | 5 days ago | |
TypeScript | JavaScript | |
GNU General Public License v3.0 or later | MIT License |
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.
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/
Knex
-
JavaScript Libraries for Implementing Trendy Technologies in Web Apps in 2024
Knex.js
-
Create a Blog web app using Adonis.js 6
AdonisJS core team has created/maintains Lucid. It is a SQL query builder, and an Active Record ORM built on top of Knex.
-
Type-safe Data Access in Go using Prisma and sqlc
Now, why not use an ORM? I've seen performance issues too many times with ORMs. I prefer writing my own SQL to avoid surprises. After all, I know the database schema and writing code for a specific purpose very often leads to better performance than generic code. ORMs have to support all kinds of database schemas. I only have to support mine. Having successfully used Knex.js in NodeJS (a popular query builder) in the past, I know writing SQL queries myself is not hard and provides very good performance.
-
Can I create another WordPress that satisfies humanity?
Given the dynamic nature of the schema, we employ Knex, a query builder, for database access.
-
What's wrong with Node.js ORMs? Thousands of issues? Why?
https://www.npmjs.com/package/knex - 779 issues
- Knex 3.0
-
Plankaban Raspberry Pi 4 Setup Help
# related: https://github.com/knex/knex/issues/2354
-
Credentials Leak with Knex
This article will be focused on a security issue that I found in Knex and how to mitigate it, but I'll also talk briefly about the social aspects of this problem.
- [Node] Knex.js: comment correctement chaîner et utiliser .First () pour interroger?
-
Why SQL is right for Infrastructure Management
SQL is an old, irregular language to work with, but it is better known than HCL and SQL already has it's own Pulumi/CDK in the form of every ORM with introspection (like Javascript's Prisma, Python's Django, Go's XO etc) and QueryBuilder (LINQ, Knex, etc) in whatever programming language you prefer. You probably already know it.
What are some alternatives?
denodb - MySQL, SQLite, MariaDB, PostgreSQL and MongoDB ORM for Deno
Prisma - Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB and CockroachDB
postgres - Postgres.js - The Fastest full featured PostgreSQL client for Node.js, Deno, Bun and CloudFlare
Sequelize - Feature-rich ORM for modern Node.js and TypeScript, it supports PostgreSQL (with JSON and JSONB support), MySQL, MariaDB, SQLite, MS SQL Server, Snowflake, Oracle DB (v6), DB2 and DB2 for IBM i.
MySQL - A pure node.js JavaScript Client implementing the MySQL protocol.
pg-promise - PostgreSQL interface for Node.js
trpc - 🧙♀️ Move Fast and Break Nothing. End-to-end typesafe APIs made easy.
TypeORM - ORM for TypeScript and JavaScript. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, SAP Hana, WebSQL databases. Works in NodeJS, Browser, Ionic, Cordova and Electron platforms.
PostgreSQL - PostgreSQL client for node.js.
kysely - A type-safe typescript SQL query builder [Moved to: https://github.com/kysely-org/kysely]
JDBI - The Jdbi library provides convenient, idiomatic access to relational databases in Java and other JVM technologies such as Kotlin, Clojure or Scala.
slonik - A Node.js PostgreSQL client with runtime and build time type safety, and composable SQL.