diff --git a/src/db/mod.rs b/src/db/mod.rs index 61c9341..824dbde 100644 --- a/src/db/mod.rs +++ b/src/db/mod.rs @@ -7,11 +7,9 @@ use std::path::{Path, PathBuf}; use std::sync::{Arc, Mutex}; use config::{MiscSettings, UserConfig}; -use ddns::{DDNSConfigSource, DDNSConfig}; use errors::*; use index; use user::*; -use vfs::{MountPoint, VFS, VFSSource}; mod schema; @@ -126,33 +124,6 @@ impl ConnectionSource for DB { } } -impl DDNSConfigSource for DB { - fn get_ddns_config(&self) -> Result { - use self::ddns_config::dsl::*; - let connection = self.connection.lock().unwrap(); - let connection = connection.deref(); - Ok(ddns_config - .select((host, username, password)) - .get_result(connection)?) - } -} - -impl VFSSource for DB { - fn get_vfs(&self) -> Result { - use self::mount_points::dsl::*; - let mut vfs = VFS::new(); - let connection = self.connection.lock().unwrap(); - let connection = connection.deref(); - let points: Vec = mount_points - .select((source, name)) - .get_results(connection)?; - for point in points { - vfs.mount(&Path::new(&point.source), &point.name)?; - } - Ok(vfs) - } -} - fn _get_test_db(name: &str) -> DB { let config_path = Path::new("test/config.toml"); let config = UserConfig::parse(&config_path).unwrap(); diff --git a/src/ddns.rs b/src/ddns.rs index 6ad6f34..854eae4 100644 --- a/src/ddns.rs +++ b/src/ddns.rs @@ -1,9 +1,13 @@ +use core::ops::Deref; +use diesel::prelude::*; use reqwest; use reqwest::header::{Authorization, Basic}; use std::io; use std::thread; use std::time; +use db::{ConnectionSource, DB}; +use db::ddns_config; use errors; #[derive(Debug, Deserialize, Queryable)] @@ -17,6 +21,18 @@ pub trait DDNSConfigSource { fn get_ddns_config(&self) -> errors::Result; } +impl DDNSConfigSource for DB { + fn get_ddns_config(&self) -> errors::Result { + use self::ddns_config::dsl::*; + let connection = self.get_connection(); + let connection = connection.lock().unwrap(); + let connection = connection.deref(); + Ok(ddns_config + .select((host, username, password)) + .get_result(connection)?) + } +} + #[derive(Debug)] enum DDNSError { InternalError(errors::Error), diff --git a/src/vfs.rs b/src/vfs.rs index 54b43bb..5198c53 100644 --- a/src/vfs.rs +++ b/src/vfs.rs @@ -1,7 +1,10 @@ +use core::ops::Deref; +use diesel::prelude::*; use std::collections::HashMap; use std::path::PathBuf; use std::path::Path; +use db::{ConnectionSource, DB}; use db::mount_points; use errors::*; @@ -9,6 +12,23 @@ pub trait VFSSource { fn get_vfs(&self) -> Result; } +impl VFSSource for DB { + fn get_vfs(&self) -> Result { + use self::mount_points::dsl::*; + let mut vfs = VFS::new(); + let connection = self.get_connection(); + let connection = connection.lock().unwrap(); + let connection = connection.deref(); + let points: Vec = mount_points + .select((source, name)) + .get_results(connection)?; + for point in points { + vfs.mount(&Path::new(&point.source), &point.name)?; + } + Ok(vfs) + } +} + #[derive(Debug, Deserialize, Insertable, Queryable)] #[table_name="mount_points"] pub struct MountPoint {