diff --git a/src/pg_access.rs b/src/pg_access.rs index e1cb065..dde372e 100644 --- a/src/pg_access.rs +++ b/src/pg_access.rs @@ -63,9 +63,13 @@ impl PgAccess { pub async fn new( fetch_settings: &PgFetchSettings, database_dir: &PathBuf, + cache_dir: Option<&PathBuf>, ) -> Result { - // cache directory - let cache_dir = Self::create_cache_dir_structure(&fetch_settings).await?; + let cache_dir = match cache_dir { + Some(d) => d.clone(), + None => Self::create_cache_dir_structure(&fetch_settings).await?, + }; + Self::create_db_dir_structure(database_dir).await?; // pg_ctl executable let mut pg_ctl = cache_dir.clone(); diff --git a/src/postgres.rs b/src/postgres.rs index af2536c..0dfbdea 100644 --- a/src/postgres.rs +++ b/src/postgres.rs @@ -35,6 +35,8 @@ use crate::pg_types::PgResult; pub struct PgSettings { /// postgresql database directory pub database_dir: PathBuf, + // cache directory + pub cache_dir: Option, /// postgresql port pub port: u16, /// postgresql user name @@ -100,7 +102,12 @@ impl PgEmbed { &password, pg_settings.port.to_string() ); - let pg_access = PgAccess::new(&fetch_settings, &pg_settings.database_dir).await?; + let pg_access = PgAccess::new( + &fetch_settings, + &pg_settings.database_dir, + pg_settings.cache_dir.as_ref(), + ) + .await?; Ok(PgEmbed { pg_settings, fetch_settings,