surrealpatch/sdk/tests/api/backup.rs
2024-08-22 10:26:03 +00:00

47 lines
1.2 KiB
Rust

// Tests for exporting and importing data
// Supported by the storage engines and the HTTP protocol
use surrealdb_core::sql::Table;
use tokio::fs::remove_file;
#[test_log::test(tokio::test)]
async fn export_import() {
let (permit, db) = new_db().await;
let db_name = Ulid::new().to_string();
db.use_ns(NS).use_db(&db_name).await.unwrap();
for i in 0..10 {
let _: Vec<ApiRecordId> = db
.create("user")
.content(Record {
name: format!("User {i}"),
})
.await
.unwrap();
}
drop(permit);
let file = format!("{db_name}.sql");
let res = async {
db.export(&file).await?;
db.query("REMOVE TABLE user").await?;
db.import(&file).await?;
Result::<(), Error>::Ok(())
}
.await;
remove_file(file).await.unwrap();
res.unwrap();
}
#[test_log::test(tokio::test)]
#[cfg(feature = "ml")]
async fn ml_export_import() {
let (permit, db) = new_db().await;
let db_name = Ulid::new().to_string();
db.use_ns(NS).use_db(&db_name).await.unwrap();
db.import("../tests/linear_test.surml").ml().await.unwrap();
drop(permit);
let file = format!("{db_name}.surml");
db.export(&file).ml("Prediction", Version::new(0, 0, 1)).await.unwrap();
db.import(&file).ml().await.unwrap();
remove_file(file).await.unwrap();
}