diff options
| author | Joe Carstairs <me@joeac.net> | 2025-08-15 16:02:40 +0000 |
|---|---|---|
| committer | joeac <me@joeac.net> | 2025-08-15 16:02:40 +0000 |
| commit | 703496a49315f7b67442abf0e0df3c41d3605d3b (patch) | |
| tree | 8e92f3842710162f3b26e910eb931950c1049f07 /schist_desktop_gui/src/connection.rs | |
| parent | 8d714f760bd0349560d464583a151a04a19de1c9 (diff) | |
task-012 (#2)
Co-authored-by: Joe Carstairs <jcarstairs@scottlogic.com>
Reviewed-on: https://git.joeac.net/joeac/schist/pulls/2
Co-authored-by: Joe Carstairs <me@joeac.net>
Co-committed-by: Joe Carstairs <me@joeac.net>
Diffstat (limited to 'schist_desktop_gui/src/connection.rs')
| -rw-r--r-- | schist_desktop_gui/src/connection.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/schist_desktop_gui/src/connection.rs b/schist_desktop_gui/src/connection.rs new file mode 100644 index 0000000..5a88083 --- /dev/null +++ b/schist_desktop_gui/src/connection.rs @@ -0,0 +1,20 @@ +use std::{fs::create_dir_all, path::Path}; + +use anyhow::Context; +use diesel::{Connection, SqliteConnection}; + +const SCHIST_DATA_DIR: &'static str = "schist"; +const SCHIST_DATABASE_FILENAME: &'static str = "schist.sqlite"; + +pub fn establish_connection() -> anyhow::Result<SqliteConnection> { + let data_dir = dirs::data_dir().context("Failed to get local app data directory")?; + let schist_local_dir = data_dir.join(Path::new(SCHIST_DATA_DIR)); + create_dir_all(&schist_local_dir) + .context(format!("Failed to create local files directory at {}", schist_local_dir.display()))?; + let db_path = schist_local_dir.join(Path::new(SCHIST_DATABASE_FILENAME)); + let db_path = db_path + .to_str() + .context("Failed to construct database path")?; + Ok(SqliteConnection::establish(db_path) + .with_context(|| format!("Failed to connect to database at {}", db_path))?) +} |
