From 3c67388fae875798166ffbd93583e049e4b30cb4 Mon Sep 17 00:00:00 2001 From: "Philip (a-0)" <@ph:a-0.me> Date: Sun, 7 Jan 2024 22:14:04 +0100 Subject: [PATCH] Made database location configurable --- ubisync/src/config.rs | 2 ++ ubisync/src/lib.rs | 2 +- ubisync/src/state/api_state.rs | 6 +++--- ubisync/src/state/comm_state.rs | 4 ++-- ubisync/src/state/mod.rs | 7 +++++-- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ubisync/src/config.rs b/ubisync/src/config.rs index 776d73f..c67f7b5 100644 --- a/ubisync/src/config.rs +++ b/ubisync/src/config.rs @@ -3,6 +3,7 @@ use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Clone, Debug)] pub struct Config { pub i2p_private_key: Option, + pub database_location: String, pub api_config: ApiConfig, pub jwt_secret: String, } @@ -11,6 +12,7 @@ impl Default for Config { fn default() -> Self { Config { i2p_private_key: None, + database_location: "mem".to_string(), api_config: Default::default(), jwt_secret: "insecuresecret".to_string(), } diff --git a/ubisync/src/lib.rs b/ubisync/src/lib.rs index 2e18213..9423603 100644 --- a/ubisync/src/lib.rs +++ b/ubisync/src/lib.rs @@ -23,7 +23,7 @@ pub struct Ubisync { impl Ubisync { pub async fn new(config: &Config) -> anyhow::Result { - let state = State::new().await?; + let state = State::new(&config.database_location).await?; let comm_handle = Arc::new(CommHandle::new(CommState::new(state.clone()), config)?); state.set_comm_handle(comm_handle.clone()); diff --git a/ubisync/src/state/api_state.rs b/ubisync/src/state/api_state.rs index 8e1486e..da5e510 100644 --- a/ubisync/src/state/api_state.rs +++ b/ubisync/src/state/api_state.rs @@ -115,7 +115,7 @@ mod tests { tracing_setup!(Level::DEBUG); let state = ApiState::new( - State::new().await.unwrap(), + State::new("mem").await.unwrap(), "abcdabcdabcdabcdabcdabcdabcdabcd", ); let id = state @@ -132,9 +132,9 @@ mod tests { #[serial_test::serial] async fn test_element_write() { tracing_setup!(Level::DEBUG); - + let state = ApiState::new( - State::new().await.unwrap(), + State::new("mem").await.unwrap(), "abcdabcdabcdabcdabcdabcdabcdabcd", ); let id = state diff --git a/ubisync/src/state/comm_state.rs b/ubisync/src/state/comm_state.rs index 3a2e9c2..0735dfa 100644 --- a/ubisync/src/state/comm_state.rs +++ b/ubisync/src/state/comm_state.rs @@ -92,7 +92,7 @@ mod tests { async fn test_element_add() { tracing_setup!(Level::DEBUG); - let state = CommState::new(State::new().await.unwrap()); + let state = CommState::new(State::new("mem").await.unwrap()); let id = ElementId::new(); state .add_received_element( @@ -113,7 +113,7 @@ mod tests { async fn test_element_update() { tracing_setup!(Level::DEBUG); - let state = CommState::new(State::new().await.unwrap()); + let state = CommState::new(State::new("mem").await.unwrap()); let id = ElementId::new(); state .add_received_element( diff --git a/ubisync/src/state/mod.rs b/ubisync/src/state/mod.rs index a31428b..87bef33 100644 --- a/ubisync/src/state/mod.rs +++ b/ubisync/src/state/mod.rs @@ -22,8 +22,11 @@ pub struct State { } impl State { - pub async fn new() -> anyhow::Result> { - let db = DbInstance::new("mem", "", Default::default()); + pub async fn new(db_location: &str) -> anyhow::Result> { + let db = match db_location { + "mem" => DbInstance::new("mem", "", Default::default()), + path => DbInstance::new("rocksdb", path, Default::default()), + }; match db { Ok(d) => { schema::add_schema(&d)?;