mirror of
https://github.com/aljazceru/turso.git
synced 2026-02-23 17:05:36 +01:00
enable indices in Rust SDK
This commit is contained in:
@@ -108,27 +108,19 @@ impl Builder {
|
||||
io,
|
||||
self.path.as_str(),
|
||||
self.enable_mvcc,
|
||||
indexes_enabled(),
|
||||
true,
|
||||
)?;
|
||||
Ok(Database { inner: db })
|
||||
}
|
||||
path => {
|
||||
let io: Arc<dyn turso_core::IO> = Arc::new(turso_core::PlatformIO::new()?);
|
||||
let db =
|
||||
turso_core::Database::open_file(io, path, self.enable_mvcc, indexes_enabled())?;
|
||||
let db = turso_core::Database::open_file(io, path, self.enable_mvcc, true)?;
|
||||
Ok(Database { inner: db })
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn indexes_enabled() -> bool {
|
||||
#[cfg(feature = "experimental_indexes")]
|
||||
return true;
|
||||
#[cfg(not(feature = "experimental_indexes"))]
|
||||
return false;
|
||||
}
|
||||
|
||||
/// A database.
|
||||
///
|
||||
/// The `Database` object points to a database and allows you to connect to it
|
||||
|
||||
@@ -297,3 +297,40 @@ async fn test_row_get_conversion_error() {
|
||||
let result: Result<u32, _> = row.get(0);
|
||||
assert!(matches!(result, Err(Error::ConversionFailure(_))));
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_index() {
|
||||
let db = Builder::new_local(":memory:").build().await.unwrap();
|
||||
let conn = db.connect().unwrap();
|
||||
|
||||
conn.execute("CREATE TABLE users (name TEXT PRIMARY KEY, email TEXT)", ())
|
||||
.await
|
||||
.unwrap();
|
||||
conn.execute("CREATE INDEX email_idx ON users(email)", ())
|
||||
.await
|
||||
.unwrap();
|
||||
conn.execute(
|
||||
"INSERT INTO users VALUES ('alice', 'a@b.c'), ('bob', 'b@d.e')",
|
||||
(),
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let mut rows = conn
|
||||
.query("SELECT * FROM users WHERE email = 'a@b.c'", ())
|
||||
.await
|
||||
.unwrap();
|
||||
let row = rows.next().await.unwrap().unwrap();
|
||||
assert!(row.get::<String>(0).unwrap() == "alice".to_string());
|
||||
assert!(row.get::<String>(1).unwrap() == "a@b.c".to_string());
|
||||
assert!(rows.next().await.unwrap().is_none());
|
||||
|
||||
let mut rows = conn
|
||||
.query("SELECT * FROM users WHERE email = 'b@d.e'", ())
|
||||
.await
|
||||
.unwrap();
|
||||
let row = rows.next().await.unwrap().unwrap();
|
||||
assert!(row.get::<String>(0).unwrap() == "bob".to_string());
|
||||
assert!(row.get::<String>(1).unwrap() == "b@d.e".to_string());
|
||||
assert!(rows.next().await.unwrap().is_none());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user