Skip to main content

cloud_token/
cloud_token.rs

1//! Throwaway spike: connect to a SurrealDB Cloud instance with a brokered
2//! access token (JWT) and run a query. Proves the wss/TLS + `authenticate`
3//! path and doubles as an ad-hoc SurrealQL runner for that instance.
4//! Run: `SURREAL_TOKEN=<jwt> SURREAL_QUERY='INFO FOR DB' \
5//!       cargo run -p surreal-client --example cloud_token`
6
7use surreal_client::SurrealConnection;
8
9#[tokio::main]
10async fn main() -> Result<(), Box<dyn std::error::Error>> {
11    let token = std::env::var("SURREAL_TOKEN").expect("set SURREAL_TOKEN");
12    let host = std::env::var("SURREAL_HOST").unwrap_or_else(|_| {
13        "wss://close-wasp-06fmkfm5uhq2f77ih987dcdac4.aws-euw1.surreal.cloud".into()
14    });
15    let query = std::env::var("SURREAL_QUERY")
16        .unwrap_or_else(|_| "USE NS main DB `vantage-leads`; INFO FOR DB;".into());
17
18    println!("connecting to {host} ...");
19    let client = SurrealConnection::dsn(&host)?
20        .auth_token(token)
21        .version_check(false)
22        .connect()
23        .await?;
24    println!(
25        "connected. server version = {:?}\n",
26        client.version().await?
27    );
28
29    let result = client.query(&query, None).await?;
30    println!("{}", serde_json::to_string_pretty(&result)?);
31
32    Ok(())
33}