Skip to content

Commit

Permalink
[SqLite Provider] Don't take ownership when not needed
Browse files Browse the repository at this point in the history
  • Loading branch information
Marta Mularczyk committed Jun 18, 2024
1 parent 9b55525 commit f3b3672
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 24 deletions.
31 changes: 12 additions & 19 deletions mls-rs-provider-sqlite/src/application.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ impl SqLiteApplicationStorage {
/// Insert `value` into storage indexed by `key`.
///
/// If a value already exists for `key` it will be overwritten.
pub fn insert(&self, key: String, value: Vec<u8>) -> Result<(), SqLiteDataStorageError> {
pub fn insert(&self, key: &str, value: &[u8]) -> Result<(), SqLiteDataStorageError> {
let connection = self.connection.lock().unwrap();

// Upsert into the database
Expand All @@ -41,13 +41,13 @@ impl SqLiteApplicationStorage {
}

/// Execute multiple [`SqLiteApplicationStorage::insert`] operations in a transaction.
pub fn transact_insert(&self, items: Vec<Item>) -> Result<(), SqLiteDataStorageError> {
pub fn transact_insert(&self, items: &[Item]) -> Result<(), SqLiteDataStorageError> {
let mut connection = self.connection.lock().unwrap();

// Upsert into the database
let tx = connection.transaction().map_err(sql_engine_error)?;

items.into_iter().try_for_each(|item| {
items.iter().try_for_each(|item| {
tx.execute(INSERT_SQL, params![item.key, item.value])
.map_err(sql_engine_error)
.map(|_| ())
Expand Down Expand Up @@ -179,7 +179,7 @@ mod tests {
let (key, value) = test_kv();
let storage = test_storage();

storage.insert(key.clone(), value.clone()).unwrap();
storage.insert(&key, &value).unwrap();

let from_storage = storage.get(&key).unwrap().unwrap();
assert_eq!(from_storage, value);
Expand All @@ -192,8 +192,8 @@ mod tests {

let storage = test_storage();

storage.insert(key.clone(), value).unwrap();
storage.insert(key.clone(), new_value.clone()).unwrap();
storage.insert(&key, &value).unwrap();
storage.insert(&key, &new_value).unwrap();

let from_storage = storage.get(&key).unwrap().unwrap();
assert_eq!(from_storage, new_value);
Expand All @@ -204,7 +204,7 @@ mod tests {
let (key, value) = test_kv();
let storage = test_storage();

storage.insert(key.clone(), value).unwrap();
storage.insert(&key, &value).unwrap();
storage.delete(&key).unwrap();

assert!(storage.get(&key).unwrap().is_none());
Expand All @@ -217,8 +217,7 @@ mod tests {

let storage = test_storage();

keys.iter()
.for_each(|k| storage.insert(k.clone(), value.clone()).unwrap());
keys.iter().for_each(|k| storage.insert(k, &value).unwrap());

let mut expected = vec![
Item::new(keys[0].clone(), value.clone()),
Expand Down Expand Up @@ -249,15 +248,9 @@ mod tests {
fn test_special_characters() {
let storage = test_storage();

storage
.insert("%$_ƕ❤_$%".to_string(), gen_rand_bytes(5))
.unwrap();
storage
.insert("%$_ƕ❤a$%".to_string(), gen_rand_bytes(5))
.unwrap();
storage
.insert("%$_ƕ❤Ḉ$%".to_string(), gen_rand_bytes(5))
.unwrap();
storage.insert("%$_ƕ❤_$%", &gen_rand_bytes(5)).unwrap();
storage.insert("%$_ƕ❤a$%", &gen_rand_bytes(5)).unwrap();
storage.insert("%$_ƕ❤Ḉ$%", &gen_rand_bytes(5)).unwrap();

let items = storage.get_by_prefix("%$_ƕ❤_").unwrap();
let keys = items.into_iter().map(|i| i.key).collect::<Vec<_>>();
Expand All @@ -269,7 +262,7 @@ mod tests {
let storage = test_storage();
let items = vec![test_item(), test_item(), test_item()];

storage.transact_insert(items.clone()).unwrap();
storage.transact_insert(&items).unwrap();

for item in items {
assert_eq!(storage.get(&item.key).unwrap(), Some(item.value));
Expand Down
10 changes: 5 additions & 5 deletions mls-rs-provider-sqlite/src/psk.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ impl SqLitePreSharedKeyStorage {
}

/// Insert a pre-shared key into storage.
pub fn insert(&self, psk_id: Vec<u8>, psk: PreSharedKey) -> Result<(), SqLiteDataStorageError> {
pub fn insert(&self, psk_id: &[u8], psk: &PreSharedKey) -> Result<(), SqLiteDataStorageError> {
let connection = self.connection.lock().unwrap();

// Upsert into the database
Expand Down Expand Up @@ -103,7 +103,7 @@ mod tests {
let (psk_id, psk) = test_psk();
let storage = test_storage();

storage.insert(psk_id.clone(), psk.clone()).unwrap();
storage.insert(&psk_id, &psk).unwrap();

let from_storage = storage.get(&psk_id).unwrap().unwrap();
assert_eq!(from_storage, psk);
Expand All @@ -116,8 +116,8 @@ mod tests {

let storage = test_storage();

storage.insert(psk_id.clone(), psk).unwrap();
storage.insert(psk_id.clone(), new_psk.clone()).unwrap();
storage.insert(&psk_id, &psk).unwrap();
storage.insert(&psk_id, &new_psk).unwrap();

let from_storage = storage.get(&psk_id).unwrap().unwrap();
assert_eq!(from_storage, new_psk);
Expand All @@ -128,7 +128,7 @@ mod tests {
let (psk_id, psk) = test_psk();
let storage = test_storage();

storage.insert(psk_id.clone(), psk).unwrap();
storage.insert(&psk_id, &psk).unwrap();
storage.delete(&psk_id).unwrap();

assert!(storage.get(&psk_id).unwrap().is_none());
Expand Down

0 comments on commit f3b3672

Please sign in to comment.