From d25989e9cbb9890cb3fae89f20b5317920e3b9d8 Mon Sep 17 00:00:00 2001 From: Tom Leavy Date: Wed, 19 Jun 2024 15:16:51 -0400 Subject: [PATCH 1/2] [sqlite] Add key package count function --- mls-rs-provider-sqlite/src/key_package.rs | 25 +++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/mls-rs-provider-sqlite/src/key_package.rs b/mls-rs-provider-sqlite/src/key_package.rs index 9d4ce8b8..82a028aa 100644 --- a/mls-rs-provider-sqlite/src/key_package.rs +++ b/mls-rs-provider-sqlite/src/key_package.rs @@ -90,6 +90,16 @@ impl SqLiteKeyPackageStorage { .map(|_| ()) .map_err(|e| SqLiteDataStorageError::SqlEngineError(e.into())) } + + pub fn count(&self) -> Result { + 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)] @@ -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::>(); + + 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); + } } From 9dc152b6d4e69b3625f8c4f027aa4b241030d06a Mon Sep 17 00:00:00 2001 From: Tom Leavy Date: Wed, 19 Jun 2024 15:18:39 -0400 Subject: [PATCH 2/2] bump mls-rs-provider-sqlite to 0.12.0 --- mls-rs-ffi/Cargo.toml | 2 +- mls-rs-provider-sqlite/Cargo.toml | 2 +- mls-rs/Cargo.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mls-rs-ffi/Cargo.toml b/mls-rs-ffi/Cargo.toml index 85fcb586..b648569a 100644 --- a/mls-rs-ffi/Cargo.toml +++ b/mls-rs-ffi/Cargo.toml @@ -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 } diff --git a/mls-rs-provider-sqlite/Cargo.toml b/mls-rs-provider-sqlite/Cargo.toml index 103bf757..4e46997b 100644 --- a/mls-rs-provider-sqlite/Cargo.toml +++ b/mls-rs-provider-sqlite/Cargo.toml @@ -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" diff --git a/mls-rs/Cargo.toml b/mls-rs/Cargo.toml index 81587609..97172296 100644 --- a/mls-rs/Cargo.toml +++ b/mls-rs/Cargo.toml @@ -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 }