PlanetScale Serverless Driver for Rustâ„¢
Rust "version" of database-js. As stated in database-js it uses PlanetScale HTTP api for database queries. It will perfectly run on Cloudflare Workers Or Vercel Edge Functions.
Usage
# also "cargo add anyhow"
Then proceed like in examples!
Examples
Connection and simple SQL execution
use PSConnection;
let conn = new;
let res = conn.execute.await.unwrap;
fetch_one/fetch_all/fetch_scalar
As you can see, deserialization doesn't use field names (MAYBE IN FUTURE) so remember to write your structs correctly!
use ;
// ...
let res: TestD = query.fetch_one.await?;
println!;
let res: = query.fetch_all.await?;
println!;
let res: bool = query.fetch_scalar.await?;
println!;
QueryBuilder
If you want to bind safely values into your query, you should use QueryBuilder
Note: now query method is wrapper around QueryBuilder
// ...
// note: values passed to .bind function must have trait ToString
let id = 69;
let name = "420";
// res there will be empty result, if you want to get reponse data use "execute_raw"
let res = query
.bind
.bind
.execute
.await?;
Json
use ;
// ...
let json: TestJSON = TestJSON ;
let res: TestD = query.bind.fetch_one.await?;
println!;
Transactions
// ...
conn.transaction.await?;
Features
This crate uses reqwest for making http requests. By default, this crate will use the default-tls
feature of reqwest
which may not build in your environment (e.g. netlify serverless functions). You can override this by disabling the default features of this crate and enabling a different reqwest tls feature like so:
= {="0.5.0", =false}
= {= "0.11.17", =false, =["rustls-tls"]}
Warning If you simply disable default features and do not enable a different tls feature, reqwest will panic at runtime.
More examples in the examples folder
If you want to run them:
PS_HOST=<host> PS_USER=<username> PS_PASS=<pscale_password> cargo