Skip to content

Commit

Permalink
Switch to surrealdb-beta crate to use official QueryStats-API (#164)
Browse files Browse the repository at this point in the history
* Switch to `surrealdb-beta` crate and official `QueryStats`-API

* Slightly simplify `process_result`

* Revert change in Tauri config

* update embeddings
  • Loading branch information
kearfy authored Jan 10, 2024
1 parent 867cb47 commit 827dffe
Show file tree
Hide file tree
Showing 10 changed files with 1,216 additions and 943 deletions.
625 changes: 358 additions & 267 deletions src-embed/Cargo.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src-embed/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ wasm-bindgen = "0.2.87"
wasm-bindgen-futures = "0.4.37"
serde-wasm-bindgen = "0.6.0"
concat-string = "1.0.1"
surrealdb = { git = "https://github.com/macjuul/surrealdb.git", rev = "33461a33", features = ["kv-mem"] }
surrealdb = { package="surrealdb-beta", version="1", features = ["kv-mem"] }
regex = "1.9.5"
serde_json = "1.0"
tokio = { version = "1", features = ["time"] }
Expand Down
2 changes: 1 addition & 1 deletion src-embed/src/query/local.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ pub async fn execute_local_query(
console_log!("Failed to parse query variables");
}

let query_task = builder.await;
let query_task = builder.with_stats().await;

console_log!(
"Received response from database, success: {}",
Expand Down
29 changes: 13 additions & 16 deletions src-embed/src/query/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ pub mod local;
pub mod remote;

use serde::Deserialize;
use surrealdb::method::WithStats;
use surrealdb::sql::Array;
use surrealdb::sql::Object;
use surrealdb::sql::Value;
Expand Down Expand Up @@ -45,7 +46,7 @@ fn make_error(err: &str) -> Array {
results
}

fn process_result(response: Result<Response, surrealdb::Error>) -> String {
fn process_result(response: Result<WithStats<Response>, surrealdb::Error>) -> String {
let results: Array = match response {
Ok(mut response) => {
let statement_count = response.num_statements();
Expand All @@ -56,28 +57,24 @@ fn process_result(response: Result<Response, surrealdb::Error>) -> String {
for i in 0..statement_count {
let mut entry = Object::default();
let error = errors.get(&i);

entry.insert(
"time".to_owned(),
Value::from(response.take_time(i).unwrap()),
);

let result: Value;
let status: Value;

match error {
Some(error) => {
result = Value::from(error.to_string());
status = "ERR".into();
let (result, status, stats) = match error {
Some((stats, error)) => {
(Value::from(error.to_string()), Value::from("ERR"), *stats)
}
None => {
result = response.take(i).unwrap();
status = "OK".into();
let (stats, res) = response.take::<Value>(i).unwrap();
(res.unwrap(), Value::from("OK"), stats)
}
};

entry.insert("result".to_owned(), result);
entry.insert("status".to_owned(), status);
if let Some(time) = stats.execution_time {
entry.insert(
"time".to_owned(),
Value::Duration(time.into()),
);
};

results.push(Value::Object(entry));
}
Expand Down
2 changes: 1 addition & 1 deletion src-embed/src/query/remote.rs
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ pub async fn execute_remote_query(query: String, params: String) -> String {
console_log!("Failed to parse query variables");
}

let query_task = builder.await;
let query_task = builder.with_stats().await;

console_log!(
"Received response from database, success: {}",
Expand Down
Loading

0 comments on commit 827dffe

Please sign in to comment.