sequelts
better-sqlite3
sequelts | better-sqlite3 | |
---|---|---|
3 | 28 | |
28 | 5,078 | |
- | 2.3% | |
0.0 | 8.3 | |
over 1 year ago | 4 days ago | |
TypeScript | C++ | |
- | 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.
better-sqlite3
- From Frontend to Backend
- Convince me to use better-sqlite3
-
Build A Full-Stack Typescript Application with Nuxt and tRPC
In the second video of the series, we are separating routers and adding SQLite, Better SQLite 3, Database to the application to show access to context for performing a simple query and mutation.
-
How practicle is it to have a textfile based database with an SQLite API?
If I were charged with this task I'd probably take an actual SQLite DB and write methods to parse data from text files, then process it within SQLite, and serialize it back to the text file when an API method is called or after each processing step. A fresh DB engine, fully re-implemented to match SQLite's API is insane unless you're a prodigy or have a sizable team and will come with numerous downsides. I can recommend https://github.com/WiseLibs/better-sqlite3 and https://github.com/loveencounterflow/dbay
- VS Code as a dependency for an NPM module
-
Show HN: Doculite – Use SQLite Like Firestore
better-sqlite3 is orders of magnitude faster than the async SQLite bindings. We found this to be true when testing SQLite options for Notion's desktop app anyways.
https://github.com/WiseLibs/better-sqlite3#why-should-i-use-...
-
Drizzle ORM, SQLite and Nuxt JS - Getting Started
Better SQLite is a wrapper around the SQLite database engine that provides a number of improvements over the standard SQLite API. One of those benefits is type safety, Better SQLite uses TypeScript to provide type safety for queries, which can help to prevent errors.
-
Node - code structure when "being synchronous" is the outlier
better-sqlite3 does the job synchronously
-
SvelteKit 1.0 with SQLite Tutorial (Self Promotion)
I used better-sqlite3 . It is simple to use as it is synchronous. I don't know if it scales good (at least the docs say it) but works great for my small use cases.
-
I Migrated from a Postgres Cluster to Distributed SQLite with LiteFS
Kent's recommended NodeJS module, `better-sqlite3`, has some very nifty features including the creation of JavaScript user-defined functions[0] that (if I understand this right) can be called from SQLite. Combined with TRIGGERs, I wonder if it might fire a function within the app when an UPDATE/INSERT happens from a different process? (This is me wondering out loud, I don't actually know.)
I also recommend checking out Replicache[1] and alternatives, which may be a better way to handle the networking and database replication so that it doesn't rely on the underlying DB.
[0] https://github.com/WiseLibs/better-sqlite3/blob/HEAD/docs/ap...
What are some alternatives?
liveviewjs - LiveView-based library for reactive app development in NodeJS and Deno
sveltekit-prisma - A sample repository to show how SvelteKit and Prisma work together.
flyweight - An ORM for SQLite
Prisma - Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB and CockroachDB
kysely-codegen - Generate Kysely type definitions from your database.
SQLitePlus - A modern C++ header only SQLite3 wrapper
ts-sql - A SQL database implemented purely in TypeScript type annotations.
dqlite - Embeddable, replicated and fault-tolerant SQL engine.
assert-combinators - Functional assertion combinators.
node-sqlite3 - SQLite3 bindings for Node.js
postgresql-typed - Haskell PostgreSQL library with compile-time type inference
graphql-ws - Coherent, zero-dependency, lazy, simple, GraphQL over WebSocket Protocol compliant server and client.