use nodedb_client::NodeDb;
use nodedb_lite::{NodeDbLite, PagedbStorageMem};
use nodedb_types::document::Document;
use nodedb_types::value::Value;
#[cfg(not(target_arch = "wasm32"))]
use nodedb_lite::{Encryption, PagedbStorageDefault};
#[tokio::test]
async fn select_after_create_works_without_flush() {
let storage = PagedbStorageMem::open_in_memory().await.unwrap();
let db = NodeDbLite::open(storage).await.unwrap();
db.execute_sql("CREATE COLLECTION foo WITH (bitemporal=true)", &[])
.await
.unwrap();
let mut doc = Document::new("a");
doc.set("content", Value::String("x".into()));
db.document_put("foo", doc).await.unwrap();
let result = db
.execute_sql("SELECT id FROM foo", &[])
.await
.expect("SELECT on bitemporal collection must not fail");
assert!(
!result.rows.is_empty(),
"expected at least one row; got zero"
);
}
#[tokio::test]
async fn select_on_empty_bitemporal_collection_succeeds() {
let storage = PagedbStorageMem::open_in_memory().await.unwrap();
let db = NodeDbLite::open(storage).await.unwrap();
db.execute_sql("CREATE COLLECTION bar WITH (bitemporal=true)", &[])
.await
.unwrap();
let result = db
.execute_sql("SELECT id FROM bar", &[])
.await
.expect("SELECT on empty bitemporal collection must not fail");
assert!(
result.rows.is_empty(),
"expected zero rows on empty collection"
);
}
#[cfg(not(target_arch = "wasm32"))]
#[tokio::test]
async fn select_after_reopen_works() {
let dir = tempfile::tempdir().unwrap();
let path = dir.path().join("reopen.db");
{
let storage = PagedbStorageDefault::open(&path, Encryption::Plaintext)
.await
.unwrap();
let db = NodeDbLite::open(storage).await.unwrap();
db.execute_sql("CREATE COLLECTION baz WITH (bitemporal=true)", &[])
.await
.unwrap();
let mut doc = Document::new("doc1");
doc.set("content", Value::String("hello".into()));
db.document_put("baz", doc).await.unwrap();
db.shutdown().await;
}
{
let storage = PagedbStorageDefault::open(&path, Encryption::Plaintext)
.await
.unwrap();
let db = NodeDbLite::open(storage).await.unwrap();
let result = db
.execute_sql("SELECT id FROM baz", &[])
.await
.expect("SELECT after reopen must not fail");
assert!(
!result.rows.is_empty(),
"expected at least one row after reopen; got zero"
);
}
}