Skip to content

Commit

Permalink
Add key package count to sqlite provider (#163)
Browse files Browse the repository at this point in the history
* [sqlite] Add key package count function

* bump mls-rs-provider-sqlite to 0.12.0
  • Loading branch information
tomleavy authored Jun 20, 2024
1 parent f49494b commit 95a513d
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 3 deletions.
2 changes: 1 addition & 1 deletion mls-rs-ffi/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ x509 = ["mls-rs-identity-x509"]
mls-rs = { path = "../mls-rs", version = "0.39.0", features = ["ffi"] }
mls-rs-crypto-openssl = { path = "../mls-rs-crypto-openssl", version = "0.9.0", optional = true }
mls-rs-identity-x509 = { path = "../mls-rs-identity-x509", version = "0.11.0", optional = true }
mls-rs-provider-sqlite = { path = "../mls-rs-provider-sqlite", version = "0.11.0", default-features = false, optional = true }
mls-rs-provider-sqlite = { path = "../mls-rs-provider-sqlite", version = "0.12.0", default-features = false, optional = true }
safer-ffi = { version = "0.1.7", default-features = false }
safer-ffi-gen = { version = "0.9.2", default-features = false }
2 changes: 1 addition & 1 deletion mls-rs-provider-sqlite/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "mls-rs-provider-sqlite"
version = "0.11.0"
version = "0.12.0"
edition = "2021"
description = "SQLite based state storage for mls-rs"
homepage = "https://github.com/awslabs/mls-rs"
Expand Down
25 changes: 25 additions & 0 deletions mls-rs-provider-sqlite/src/key_package.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,16 @@ impl SqLiteKeyPackageStorage {
.map(|_| ())
.map_err(|e| SqLiteDataStorageError::SqlEngineError(e.into()))
}

pub fn count(&self) -> Result<usize, SqLiteDataStorageError> {
let connection = self.connection.lock().unwrap();

connection
.query_row("SELECT count(*) FROM key_package", params![], |row| {
row.get(0)
})
.map_err(|e| SqLiteDataStorageError::SqlEngineError(e.into()))
}
}

#[cfg_attr(not(mls_build_async), maybe_async::must_be_sync)]
Expand Down Expand Up @@ -215,4 +225,19 @@ mod tests {
assert!(storage.get(&data[2].0).unwrap().is_none());
assert!(storage.get(&data[3].0).unwrap().is_none());
}

#[test]
fn key_count() {
let mut storage = test_storage();

let test_packages = (0..10).map(|_| test_key_package()).collect::<Vec<_>>();

test_packages
.into_iter()
.for_each(|(key_package_id, key_package)| {
storage.insert(&key_package_id, key_package).unwrap();
});

assert_eq!(storage.count().unwrap(), 10);
}
}
2 changes: 1 addition & 1 deletion mls-rs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ spin = { version = "0.9.8", default-features = false, features = ["mutex", "spin
maybe-async = { version = "0.2.10" }

# Optional dependencies
mls-rs-provider-sqlite = { path = "../mls-rs-provider-sqlite", version = "0.11.0", default-features = false, optional = true }
mls-rs-provider-sqlite = { path = "../mls-rs-provider-sqlite", version = "0.12.0", default-features = false, optional = true }
mls-rs-crypto-openssl = { path = "../mls-rs-crypto-openssl", optional = true, version = "0.9.0" }
# TODO: https://github.com/GoogleChromeLabs/wasm-bindgen-rayon
rayon = { version = "1", optional = true }
Expand Down

0 comments on commit 95a513d

Please sign in to comment.