diff --git a/hammond-data/benches/bench.rs b/hammond-data/benches/bench.rs index 68ebbd8..f3a7599 100644 --- a/hammond-data/benches/bench.rs +++ b/hammond-data/benches/bench.rs @@ -14,7 +14,7 @@ use rayon::prelude::*; use rand::Rng; use test::Bencher; -use hammond_data::run_migration_on; +use hammond_data::utils::run_migration_on; use hammond_data::models::NewSource; use hammond_data::feed::{index, Feed}; use hammond_data::Database; @@ -51,7 +51,7 @@ fn get_temp_db() -> TempDB { .join(format!("hammonddb_{}.db", rng.gen::())); let db = SqliteConnection::establish(db_path.to_str().unwrap()).unwrap(); - ::run_migration_on(&db).unwrap(); + run_migration_on(&db).unwrap(); TempDB(tmp_dir, db_path, db) } diff --git a/hammond-data/src/errors.rs b/hammond-data/src/errors.rs index 9446dff..de01e77 100644 --- a/hammond-data/src/errors.rs +++ b/hammond-data/src/errors.rs @@ -1,4 +1,5 @@ use diesel::result; +use diesel::migrations::RunMigrationsError; use rss; use reqwest; @@ -7,6 +8,7 @@ use std::io; error_chain! { foreign_links { DieselResultError(result::Error); + DieselMigrationError(RunMigrationsError); RSSError(rss::Error); ReqError(reqwest::Error); IoError(io::Error); diff --git a/hammond-data/src/feed.rs b/hammond-data/src/feed.rs index a84e078..66abdce 100644 --- a/hammond-data/src/feed.rs +++ b/hammond-data/src/feed.rs @@ -125,6 +125,7 @@ mod tests { use rss; use self::rand::Rng; use models::NewSource; + use utils::run_migration_on; use std::io::BufReader; use std::path::PathBuf; @@ -146,7 +147,7 @@ mod tests { .join(format!("hammonddb_{}.db", rng.gen::())); let db = SqliteConnection::establish(db_path.to_str().unwrap()).unwrap(); - ::run_migration_on(&db).unwrap(); + run_migration_on(&db).unwrap(); TempDB(tmp_dir, db_path, db) } diff --git a/hammond-data/src/lib.rs b/hammond-data/src/lib.rs index 8992bc6..17bebf0 100644 --- a/hammond-data/src/lib.rs +++ b/hammond-data/src/lib.rs @@ -30,7 +30,6 @@ pub mod errors; mod parser; mod schema; -use diesel::migrations::RunMigrationsError; use diesel::prelude::*; use std::path::PathBuf; @@ -38,8 +37,6 @@ use std::sync::{Arc, Mutex}; pub type Database = Arc>; -embed_migrations!("migrations/"); - lazy_static!{ #[allow(dead_code)] static ref HAMMOND_XDG: xdg::BaseDirectories = { @@ -66,28 +63,3 @@ lazy_static!{ HAMMOND_XDG.create_data_directory("Downloads").unwrap() }; } - -pub fn init() -> Result<(), RunMigrationsError> { - let conn = establish_connection(); - run_migration_on(&conn) -} - -pub fn run_migration_on(connection: &SqliteConnection) -> Result<(), RunMigrationsError> { - info!("Running DB Migrations..."); - embedded_migrations::run(connection) - // embedded_migrations::run_with_output(connection, &mut std::io::stdout()) -} - -pub fn establish_connection() -> SqliteConnection { - let database_url = DB_PATH.to_str().unwrap(); - SqliteConnection::establish(database_url) - .expect(&format!("Error connecting to {}", database_url)) -} - -#[cfg(test)] -mod tests { - #[test] - fn it_works() { - assert_eq!(2 + 2, 4); - } -} diff --git a/hammond-data/src/utils.rs b/hammond-data/src/utils.rs index 43fea18..572cdf8 100644 --- a/hammond-data/src/utils.rs +++ b/hammond-data/src/utils.rs @@ -1,15 +1,38 @@ use rayon::prelude::*; +use diesel::prelude::*; +use chrono::prelude::*; use errors::*; use dbqueries; use Database; use models::Episode; -use chrono::prelude::*; use std::path::Path; use std::fs; use std::sync::Arc; +use DB_PATH; + +embed_migrations!("migrations/"); + +pub fn init() -> Result<()> { + let conn = establish_connection(); + run_migration_on(&conn) +} + +pub fn run_migration_on(connection: &SqliteConnection) -> Result<()> { + info!("Running DB Migrations..."); + embedded_migrations::run(connection)?; + // embedded_migrations::run_with_output(connection, &mut std::io::stdout()) + Ok(()) +} + +pub fn establish_connection() -> SqliteConnection { + let database_url = DB_PATH.to_str().unwrap(); + SqliteConnection::establish(database_url) + .expect(&format!("Error connecting to {}", database_url)) +} + // TODO: Write unit test. fn download_checker(db: &Database) -> Result<()> { let episodes = { diff --git a/hammond-gtk/src/main.rs b/hammond-gtk/src/main.rs index 046945e..869c31f 100644 --- a/hammond-gtk/src/main.rs +++ b/hammond-gtk/src/main.rs @@ -56,7 +56,7 @@ THIS IS STILL A PROTOTYPE. */ fn build_ui(app: >k::Application) { - let db = Arc::new(Mutex::new(hammond_data::establish_connection())); + let db = Arc::new(Mutex::new(hammond_data::utils::establish_connection())); let menu = gio::Menu::new(); menu.append("Quit", "app.quit"); @@ -109,7 +109,7 @@ fn main() { // TODO: make the the logger a cli -vv option loggerv::init_with_level(LogLevel::Info).unwrap(); static_resource::init().expect("Something went wrong with the resource file initialization."); - hammond_data::init().expect("Hammond Initialazation failed."); + hammond_data::utils::init().expect("Hammond Initialazation failed."); let application = gtk::Application::new("org.gnome.Hammond", gio::ApplicationFlags::empty()) .expect("Initialization failed...");