From 6e62f8b269d718c8d7557edce9be148fc4d0f093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Commaille?= Date: Mon, 26 Aug 2024 15:01:06 +0200 Subject: [PATCH] sqlite: Rename utils::ConnectionExt to SqliteKeyValueStoreConnExt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Kévin Commaille --- crates/matrix-sdk-sqlite/src/crypto_store.rs | 2 +- crates/matrix-sdk-sqlite/src/utils.rs | 40 +++++++++++++------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/crates/matrix-sdk-sqlite/src/crypto_store.rs b/crates/matrix-sdk-sqlite/src/crypto_store.rs index 606f94696..3b3abe7d9 100644 --- a/crates/matrix-sdk-sqlite/src/crypto_store.rs +++ b/crates/matrix-sdk-sqlite/src/crypto_store.rs @@ -45,7 +45,7 @@ use crate::{ error::{Error, Result}, get_or_create_store_cipher, utils::{ - load_db_version, repeat_vars, Key, SqliteAsyncConnExt, SqliteConnectionExt as _, + load_db_version, repeat_vars, Key, SqliteAsyncConnExt, SqliteKeyValueStoreConnExt, SqliteObjectStoreExt as _, }, OpenStoreError, diff --git a/crates/matrix-sdk-sqlite/src/utils.rs b/crates/matrix-sdk-sqlite/src/utils.rs index 428642f9f..262c5ce20 100644 --- a/crates/matrix-sdk-sqlite/src/utils.rs +++ b/crates/matrix-sdk-sqlite/src/utils.rs @@ -185,20 +185,6 @@ impl SqliteAsyncConnExt for SqliteAsyncConn { } } -pub(crate) trait SqliteConnectionExt { - fn set_kv(&self, key: &str, value: &[u8]) -> rusqlite::Result<()>; -} - -impl SqliteConnectionExt for rusqlite::Connection { - fn set_kv(&self, key: &str, value: &[u8]) -> rusqlite::Result<()> { - self.execute( - "INSERT INTO kv VALUES (?1, ?2) ON CONFLICT (key) DO UPDATE SET value = ?2", - (key, value), - )?; - Ok(()) - } -} - pub(crate) trait SqliteTransactionExt { fn chunk_large_query_over( &self, @@ -255,6 +241,32 @@ impl<'a> SqliteTransactionExt for Transaction<'a> { } } +/// Extension trait for a [`rusqlite::Connection`] that contains a key-value +/// table named `kv`. +/// +/// The table should be created like this: +/// +/// ```sql +/// CREATE TABLE "kv" ( +/// "key" TEXT PRIMARY KEY NOT NULL, +/// "value" BLOB NOT NULL +/// ); +/// ``` +pub(crate) trait SqliteKeyValueStoreConnExt { + /// Store the given value for the given key. + fn set_kv(&self, key: &str, value: &[u8]) -> rusqlite::Result<()>; +} + +impl SqliteKeyValueStoreConnExt for rusqlite::Connection { + fn set_kv(&self, key: &str, value: &[u8]) -> rusqlite::Result<()> { + self.execute( + "INSERT INTO kv VALUES (?1, ?2) ON CONFLICT (key) DO UPDATE SET value = ?2", + (key, value), + )?; + Ok(()) + } +} + #[async_trait] pub(crate) trait SqliteObjectStoreExt: SqliteAsyncConnExt { async fn get_kv(&self, key: &str) -> rusqlite::Result>> {