Made database location configurable

This commit is contained in:
Philip (a-0) 2024-01-07 22:14:04 +01:00
parent 7d7ff22526
commit 3c67388fae
5 changed files with 13 additions and 8 deletions

View file

@ -3,6 +3,7 @@ use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Debug)] #[derive(Serialize, Deserialize, Clone, Debug)]
pub struct Config { pub struct Config {
pub i2p_private_key: Option<String>, pub i2p_private_key: Option<String>,
pub database_location: String,
pub api_config: ApiConfig, pub api_config: ApiConfig,
pub jwt_secret: String, pub jwt_secret: String,
} }
@ -11,6 +12,7 @@ impl Default for Config {
fn default() -> Self { fn default() -> Self {
Config { Config {
i2p_private_key: None, i2p_private_key: None,
database_location: "mem".to_string(),
api_config: Default::default(), api_config: Default::default(),
jwt_secret: "insecuresecret".to_string(), jwt_secret: "insecuresecret".to_string(),
} }

View file

@ -23,7 +23,7 @@ pub struct Ubisync {
impl Ubisync { impl Ubisync {
pub async fn new(config: &Config) -> anyhow::Result<Self> { pub async fn new(config: &Config) -> anyhow::Result<Self> {
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)?); let comm_handle = Arc::new(CommHandle::new(CommState::new(state.clone()), config)?);
state.set_comm_handle(comm_handle.clone()); state.set_comm_handle(comm_handle.clone());

View file

@ -115,7 +115,7 @@ mod tests {
tracing_setup!(Level::DEBUG); tracing_setup!(Level::DEBUG);
let state = ApiState::new( let state = ApiState::new(
State::new().await.unwrap(), State::new("mem").await.unwrap(),
"abcdabcdabcdabcdabcdabcdabcdabcd", "abcdabcdabcdabcdabcdabcdabcdabcd",
); );
let id = state let id = state
@ -132,9 +132,9 @@ mod tests {
#[serial_test::serial] #[serial_test::serial]
async fn test_element_write() { async fn test_element_write() {
tracing_setup!(Level::DEBUG); tracing_setup!(Level::DEBUG);
let state = ApiState::new( let state = ApiState::new(
State::new().await.unwrap(), State::new("mem").await.unwrap(),
"abcdabcdabcdabcdabcdabcdabcdabcd", "abcdabcdabcdabcdabcdabcdabcdabcd",
); );
let id = state let id = state

View file

@ -92,7 +92,7 @@ mod tests {
async fn test_element_add() { async fn test_element_add() {
tracing_setup!(Level::DEBUG); 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(); let id = ElementId::new();
state state
.add_received_element( .add_received_element(
@ -113,7 +113,7 @@ mod tests {
async fn test_element_update() { async fn test_element_update() {
tracing_setup!(Level::DEBUG); 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(); let id = ElementId::new();
state state
.add_received_element( .add_received_element(

View file

@ -22,8 +22,11 @@ pub struct State {
} }
impl State { impl State {
pub async fn new() -> anyhow::Result<Arc<State>> { pub async fn new(db_location: &str) -> anyhow::Result<Arc<State>> {
let db = DbInstance::new("mem", "", Default::default()); let db = match db_location {
"mem" => DbInstance::new("mem", "", Default::default()),
path => DbInstance::new("rocksdb", path, Default::default()),
};
match db { match db {
Ok(d) => { Ok(d) => {
schema::add_schema(&d)?; schema::add_schema(&d)?;