sequelts
mfsqlchecker
sequelts | mfsqlchecker | |
---|---|---|
3 | 3 | |
28 | 56 | |
- | - | |
0.0 | 0.0 | |
over 1 year ago | 11 months ago | |
TypeScript | TypeScript | |
- | 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.
sequelts
-
Kysely: TypeScript SQL Query Builder
You can use these template literal types + infer to build an entire SQL parser. I did a POC that infers SQL query types by parsing the SQL query on a type level:
https://github.com/nikeee/sequelts
However, building this parser is pretty cumbersome and supporting multiple SQL dialects would be lots of pain. While I'm not a fan of query builders per se, Kysely pretty much covers everything that my POC tried to cover (except that 0 runtime overhead). However, you get the option to use different DBMs in tests than in production (pg in prod, sqlite in tests), which is a huge benefit for a lot of people. sequelts was designed to work with sqlite only. And it's not a hack.
-
Flyweight: An ORM for SQLite
The only thing I can imagine where this would be useful is when you don't have control about what DB is being used, for example, when building a product that should be compatible with Postgres and MariaDB (and each is getting used). However, in the age of containerization, this isn't a big problem any more.
In some ORMs, I need to create types that the result of a query containing JOINs is mapped to. Others don't support them _at all_. In TypeORM, there is a query builder which forces you to put in _some_ SQL for things like "WHERE a in (b, c)".
I created a proof of concept of a different approach: Just embrace SQL and provide static typing based on the query. The return type of a query is whatever that thing is that the query returns in the context of the database schema. It's possible to do in TypeScript, by parsing the SQL query at development time:
https://github.com/nikeee/sequelts
One benefit is that it does not need any runtime code, as it's just a type layer over SQL. You don't have to rely on some type-metadata that TypeScript emits. That's why it also works with JavaScript only.
-
Deepkit – High-Performance TypeScript Framework
I don't like ORMs that use runtime types either. Most of the time, I want to write raw SQL.
So as an experiment, I created a library that statically types raw SQL:
https://github.com/nikeee/sequelts
The idea is to parse the SQL queries using TS's type system. The parsed query is combined with the database schema and therefore, we know what type the query will return.
This is especially useful due to TS's structural type system.
mfsqlchecker
-
Deepkit – High-Performance TypeScript Framework
Here is another TypeScript library for validating types of SQL queries: https://github.com/MedFlyt/mfsqlchecker
It uses the actual PostgreSQL parser against your project's database schema to give 100% accurate results. Guarantees that all of your queries are valid, and that all input and output types are correct (and will also auto-generate/quickfix the output types for you in VSCode)
-
Write an SQL query builder in 150 lines of Python
> In an ideal world (one I think we are getting very close to) I think we will end up having SQL queries validated in our code against the actual DB structure the same way we have any other compilation error.
This library for TypeScript works exactly like this
https://github.com/MedFlyt/mfsqlchecker
-
Postgres to TypeScript Interfaces and Enums
This library does exactly what you want: https://github.com/MedFlyt/mfsqlchecker
and it also validates the types of the parameters that go into the query
What are some alternatives?
liveviewjs - LiveView-based library for reactive app development in NodeJS and Deno
pg-to-ts - Generate TypeScript interface definitions from your Postgres schema
flyweight - An ORM for SQLite
xql - SQL builder and utilities library for node.js (runs in browser as well).
kysely-codegen - Generate Kysely type definitions from your database.
PyPika - PyPika is a python SQL query builder that exposes the full richness of the SQL language using a syntax that reflects the resulting query. PyPika excels at all sorts of SQL queries but is especially useful for data analysis.
ts-sql - A SQL database implemented purely in TypeScript type annotations.
vramework
assert-combinators - Functional assertion combinators.
postgresql-typed - Haskell PostgreSQL library with compile-time type inference