Comments (8)
It looks like a pretty simple RPC protocol so it shouldn't be super hard to implement. I'm not interested in anything Turso-specific, but I'll take a look at implementing a hrana client with drift support.
from drift.
There is one major benefit to Turso. It's not a synchronous library. It wouldn't need an Isolate.
I meant that I'm happy to write bindings to servers following the open-source Hrana protocol (which is asynchronous in nature, we're using websockets to send commands), but not for the Turso SDK responsible for giving us a connection URL and JWT token to connect to.
Anyway, here's drift_hrana, fresh from the press. I'll add a page to the documentation as well, but there's an example in the package too. You only have to swap out the NativeDatabase
with a HranaDatabase
to use a server, the rest of drift behaves exactly the same.
from drift.
I'm not that familiar with turso, but can libsql (as a C library) be used to connect to remote turso databases? That would make it easy to use with drift, since libsql is apparently compatible with libsqlite3 and package:sqlite3
(which drift uses internally) provides bindings to that.
from drift.
I'll take a quick look at the Python Client SDK...
from drift.
What turso did was add networking to sqlite.
We wouldn't be using package:sqlite3
at all.
We would just need a websocket or http client.
They created a protocol that could use either https://github.com/tursodatabase/libsql/blob/main/docs/HRANA_3_SPEC.md
We could use this to create a websocket client.
The tricky part is parsing the returns correctly.
There are multiple clients that are available to port from.
from drift.
Straight from the horses mouth
https://x.com/glcst/status/1806414220902215981
https://x.com/mickrich384/status/1806534564124201389
https://x.com/glcst/status/1806535191818641460
If they pull through on a Dart client/server, we could use it to replace package:sqlite3
too !
from drift.
I'm not interested in anything Turso-specific
There is one major benefit to Turso. It's not a synchronous library. It wouldn't need an Isolate.
For Dart Native, using an Isolate is good practice anyway.
But for Dart Web it would be a major help.
No dealing with Javascript workers.
I remember reading this somewhere, trying to find it now.
from drift.
You're an absolute beast!
from drift.
Related Issues (20)
- Missing `extensions` Import in Generated Code HOT 1
- Add Code Generation for json_serializable HOT 2
- android::register_android_database_SQLiteConnection Android Crash HOT 2
- insertOnConflictUpdate behaves as an insert HOT 8
- Adding unique key that is case-insensitive HOT 1
- `pragma legacy_alter_table = 1` not supported in Turso HOT 4
- [WEB] Can't run a transaction inside `exclusively` HOT 1
- v2.19.0 introduced a breaking change HOT 3
- 404 link in QueryExecutor class documentation HOT 1
- Renew DriftDatabase usage example HOT 1
- feat: Declare column on table with `late final`
- Unhandled Exception: Bad state: Tried to send Request ... over isolate channel, but the connection was closed! HOT 3
- DevTools extension not working in 2.19.1 HOT 1
- [Android web] wasm issue HOT 8
- Schema dump fails in flutter with drift_dev 2.19 HOT 2
- Seeing multiple instances of SqliteException(13), SqliteException(14), and SqliteException(5) in the wild HOT 7
- CountAll not available HOT 5
- Columns from queries are suddenly nullable since Drift 2.19 HOT 6
- DB stops HOT 8
- Setup doc contains unexecutable code. HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from drift.