use sqlez_macros::sql; use crate::{define_connection, query}; define_connection!(pub static ref KEY_VALUE_STORE: KeyValueStore<()> = &[sql!( CREATE TABLE IF NOT EXISTS kv_store( key TEXT PRIMARY KEY, value TEXT NOT NULL ) STRICT; )]; ); impl KeyValueStore { query! { pub fn read_kvp(key: &str) -> Result> { SELECT value FROM kv_store WHERE key = (?) } } query! { pub async fn write_kvp(key: String, value: String) -> Result<()> { INSERT OR REPLACE INTO kv_store(key, value) VALUES ((?), (?)) } } query! { pub async fn delete_kvp(key: String) -> Result<()> { DELETE FROM kv_store WHERE key = (?) } } } // #[cfg(test)] // mod tests { // use crate::kvp::KeyValueStore; // #[gpui::test] // async fn test_kvp() { // let db = KeyValueStore(crate::open_test_db("test_kvp").await); // assert_eq!(db.read_kvp("key-1").unwrap(), None); // db.write_kvp("key-1".to_string(), "one".to_string()) // .await // .unwrap(); // assert_eq!(db.read_kvp("key-1").unwrap(), Some("one".to_string())); // db.write_kvp("key-1".to_string(), "one-2".to_string()) // .await // .unwrap(); // assert_eq!(db.read_kvp("key-1").unwrap(), Some("one-2".to_string())); // db.write_kvp("key-2".to_string(), "two".to_string()) // .await // .unwrap(); // assert_eq!(db.read_kvp("key-2").unwrap(), Some("two".to_string())); // db.delete_kvp("key-1".to_string()).await.unwrap(); // assert_eq!(db.read_kvp("key-1").unwrap(), None); // } // }