Crates.io | libsql-client |
lib.rs | libsql-client |
version | 0.33.4 |
source | src |
created_at | 2023-01-25 08:17:34.951555 |
updated_at | 2024-01-25 08:19:09.332208 |
description | HTTP-based client for libSQL and sqld |
homepage | |
repository | https://github.com/libsql/libsql-client-rs |
max_upload_size | |
id | 767197 |
size | 156,012 |
libSQL Rust client library can be used to communicate with sqld natively over HTTP protocol with native Rust interface.
At the moment the library works with the following backends:
In order to use the database in your project, just call libsql_client::Client::from_env()
, or any of the other constructors:
let db = libsql_client::Client::from_env().await?;
The only thing you need to provide is an env variable with the database URL, e.g.
export LIBSQL_CLIENT_URL="file:////tmp/example.db"
for a local database stored in a file, or
export LIBSQL_CLIENT_URL="https://example.turso.io"
for a remote database connection.
You can also explicitly use a specific backend. Examples of that are covered in the next paragraphs.
In order to connect to the database, set up the URL to point to a local path:
export LIBSQL_CLIENT_URL = "/tmp/example.db"
local_backend
feature is enabled by default, so add the dependency like this:
cargo add libsql-client
Example for how to connect to the database and perform a query:
let db = libsql_client::local::Client::from_env()?;
let response = db
.execute("SELECT * FROM table WHERE key = 'key1'")
.await?;
(...)
In order to connect to the database, set up the following variables in .dev.vars
, or register them as secrets:
LIBSQL_CLIENT_URL = "https://your-db-url.example.com"
LIBSQL_CLIENT_TOKEN = "<your-jwt>"
Add it as dependency with workers_backend
backend enabled. Turn off default features, as they are not guaranteed to compile to wasm32-unknown-unknown
,
which is required in this environment:
cargo add libsql-client --no-default-features -F workers_backend
Example for how to connect to the database and perform a query from a GET handler:
router.get_async("/", |_, ctx| async move {
let db = libsql_client::workers::Client::from_ctx(&ctx).await?;
let response = db
.execute("SELECT * FROM table WHERE key = 'key1'")
.await?;
(...)