summaryrefslogtreecommitdiff
path: root/actualbudget_to_schist_transformer/src/run.rs
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-12-12 08:28:04 +0000
committerJoe Carstairs <me@joeac.net>2024-12-12 08:28:04 +0000
commit54894f9de9bad4fecb2a116d59a03cdd003f84c0 (patch)
tree6ce5517cecf23d4e93d7a381a374e1fa6c810cee /actualbudget_to_schist_transformer/src/run.rs
parent8a30bcbdf9264d235bf93da3df8e170cfde53d02 (diff)
Moves rust workspace to root
Diffstat (limited to 'actualbudget_to_schist_transformer/src/run.rs')
-rw-r--r--actualbudget_to_schist_transformer/src/run.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/actualbudget_to_schist_transformer/src/run.rs b/actualbudget_to_schist_transformer/src/run.rs
new file mode 100644
index 0000000..3c88589
--- /dev/null
+++ b/actualbudget_to_schist_transformer/src/run.rs
@@ -0,0 +1,23 @@
+use anyhow::{Context, Result};
+use diesel::{Connection, SqliteConnection};
+
+use crate::{actualbudget_state::read_actualbudget_state, schist_state::export_schist_state, transform_state::transform_state};
+
+pub fn run(in_db_url: &str, out_db_url: &str) -> Result<()> {
+ let actualbudget_connection = &mut SqliteConnection::establish(in_db_url)
+ .with_context(|| format!(
+ "failed to establish connection to input database at {}",
+ in_db_url,
+ ))?;
+ let schist_connection = &mut SqliteConnection::establish(out_db_url)
+ .with_context(|| format!(
+ "failed to establish connection to output database at {}",
+ out_db_url,
+ ))?;
+
+ let actualbudget_state = read_actualbudget_state(actualbudget_connection)?;
+ let schist_state = transform_state(actualbudget_state)?;
+ export_schist_state(&schist_state, schist_connection)?;
+
+ Ok(())
+}