Removed the Database type alias.
This commit is contained in:
parent
55442529a8
commit
47b32ac000
@ -2,7 +2,6 @@
|
|||||||
use diesel::prelude::*;
|
use diesel::prelude::*;
|
||||||
use diesel;
|
use diesel;
|
||||||
use models::{Episode, Podcast, Source};
|
use models::{Episode, Podcast, Source};
|
||||||
use Database;
|
|
||||||
use chrono::prelude::*;
|
use chrono::prelude::*;
|
||||||
|
|
||||||
/// Random db querries helper functions.
|
/// Random db querries helper functions.
|
||||||
@ -13,7 +12,7 @@ use POOL;
|
|||||||
pub fn get_sources() -> QueryResult<Vec<Source>> {
|
pub fn get_sources() -> QueryResult<Vec<Source>> {
|
||||||
use schema::source::dsl::*;
|
use schema::source::dsl::*;
|
||||||
|
|
||||||
let con = POOL.get().unwrap();
|
let con = POOL.clone().get().unwrap();
|
||||||
let s = source.load::<Source>(&*con);
|
let s = source.load::<Source>(&*con);
|
||||||
// s.iter().for_each(|x| println!("{:#?}", x));
|
// s.iter().for_each(|x| println!("{:#?}", x));
|
||||||
s
|
s
|
||||||
@ -22,14 +21,14 @@ pub fn get_sources() -> QueryResult<Vec<Source>> {
|
|||||||
pub fn get_podcasts() -> QueryResult<Vec<Podcast>> {
|
pub fn get_podcasts() -> QueryResult<Vec<Podcast>> {
|
||||||
use schema::podcast::dsl::*;
|
use schema::podcast::dsl::*;
|
||||||
|
|
||||||
let con = POOL.get().unwrap();
|
let con = POOL.clone().get().unwrap();
|
||||||
podcast.load::<Podcast>(&*con)
|
podcast.load::<Podcast>(&*con)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_episodes() -> QueryResult<Vec<Episode>> {
|
pub fn get_episodes() -> QueryResult<Vec<Episode>> {
|
||||||
use schema::episode::dsl::*;
|
use schema::episode::dsl::*;
|
||||||
|
|
||||||
let con = POOL.get().unwrap();
|
let con = POOL.clone().get().unwrap();
|
||||||
episode.order(epoch.desc()).load::<Episode>(&*con)
|
episode.order(epoch.desc()).load::<Episode>(&*con)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +113,7 @@ pub fn get_pd_episodes_limit(
|
|||||||
pub fn get_source_from_uri(uri_: &str) -> QueryResult<Source> {
|
pub fn get_source_from_uri(uri_: &str) -> QueryResult<Source> {
|
||||||
use schema::source::dsl::*;
|
use schema::source::dsl::*;
|
||||||
|
|
||||||
let con = POOL.get().unwrap();
|
let con = POOL.clone().get().unwrap();
|
||||||
source.filter(uri.eq(uri_)).get_result::<Source>(&*con)
|
source.filter(uri.eq(uri_)).get_result::<Source>(&*con)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,13 +129,13 @@ pub fn get_episode_from_uri(con: &SqliteConnection, uri_: &str) -> QueryResult<E
|
|||||||
episode.filter(uri.eq(uri_)).get_result::<Episode>(con)
|
episode.filter(uri.eq(uri_)).get_result::<Episode>(con)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn remove_feed(db: &Database, pd: &Podcast) -> QueryResult<usize> {
|
pub fn remove_feed(pd: &Podcast) -> QueryResult<usize> {
|
||||||
let tempdb = db.lock().unwrap();
|
let con = POOL.clone().get().unwrap();
|
||||||
|
|
||||||
tempdb.transaction(|| -> QueryResult<usize> {
|
con.transaction(|| -> QueryResult<usize> {
|
||||||
delete_source(&tempdb, pd.source_id())?;
|
delete_source(&*con, pd.source_id())?;
|
||||||
delete_podcast(&tempdb, *pd.id())?;
|
delete_podcast(&*con, *pd.id())?;
|
||||||
delete_podcast_episodes(&tempdb, *pd.id())
|
delete_podcast_episodes(&*con, *pd.id())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -32,12 +32,7 @@ pub mod errors;
|
|||||||
mod parser;
|
mod parser;
|
||||||
mod schema;
|
mod schema;
|
||||||
|
|
||||||
use diesel::prelude::*;
|
|
||||||
|
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::sync::{Arc, Mutex};
|
|
||||||
|
|
||||||
pub type Database = Arc<Mutex<SqliteConnection>>;
|
|
||||||
|
|
||||||
lazy_static!{
|
lazy_static!{
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
|
|||||||
@ -61,8 +61,6 @@ impl<'a> NewEpisode<'a> {
|
|||||||
// TODO: Currently using diesel from master git.
|
// TODO: Currently using diesel from master git.
|
||||||
// Watch out for v0.99.0 beta and change the toml.
|
// Watch out for v0.99.0 beta and change the toml.
|
||||||
// TODO: Refactor into batch indexes instead.
|
// TODO: Refactor into batch indexes instead.
|
||||||
// TODO: Refactor so all index methods take consistent arguments
|
|
||||||
// like NewEpisode.index wants Sqliteconnection where the other take a Database
|
|
||||||
pub fn index(&self, con: &SqliteConnection) -> QueryResult<()> {
|
pub fn index(&self, con: &SqliteConnection) -> QueryResult<()> {
|
||||||
use schema::episode::dsl::*;
|
use schema::episode::dsl::*;
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,6 @@ use feed::Feed;
|
|||||||
use errors::*;
|
use errors::*;
|
||||||
|
|
||||||
use models::insertables::NewPodcast;
|
use models::insertables::NewPodcast;
|
||||||
use Database;
|
|
||||||
use POOL;
|
use POOL;
|
||||||
|
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
@ -129,8 +128,8 @@ impl Episode {
|
|||||||
self.favorite = b
|
self.favorite = b
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn save(&self, db: &Database) -> QueryResult<Episode> {
|
pub fn save(&self) -> QueryResult<Episode> {
|
||||||
let tempdb = db.lock().unwrap();
|
let tempdb = POOL.clone().get().unwrap();
|
||||||
self.save_changes::<Episode>(&*tempdb)
|
self.save_changes::<Episode>(&*tempdb)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -226,8 +225,8 @@ impl Podcast {
|
|||||||
self.always_dl = b
|
self.always_dl = b
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn save(&self, db: &Database) -> QueryResult<Podcast> {
|
pub fn save(&self) -> QueryResult<Podcast> {
|
||||||
let tempdb = db.lock().unwrap();
|
let tempdb = POOL.clone().get().unwrap();
|
||||||
self.save_changes::<Podcast>(&*tempdb)
|
self.save_changes::<Podcast>(&*tempdb)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,12 +8,11 @@ use r2d2_diesel::ConnectionManager;
|
|||||||
|
|
||||||
use errors::*;
|
use errors::*;
|
||||||
use dbqueries;
|
use dbqueries;
|
||||||
use Database;
|
use POOL;
|
||||||
use models::Episode;
|
use models::Episode;
|
||||||
|
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
use DB_PATH;
|
use DB_PATH;
|
||||||
|
|
||||||
@ -46,16 +45,16 @@ pub fn establish_connection() -> SqliteConnection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Write unit test.
|
// TODO: Write unit test.
|
||||||
fn download_checker(db: &Database) -> Result<()> {
|
fn download_checker() -> Result<()> {
|
||||||
let episodes = {
|
let episodes = {
|
||||||
let tempdb = db.lock().unwrap();
|
let tempdb = POOL.clone().get().unwrap();
|
||||||
dbqueries::get_downloaded_episodes(&tempdb)?
|
dbqueries::get_downloaded_episodes(&tempdb)?
|
||||||
};
|
};
|
||||||
|
|
||||||
episodes.into_par_iter().for_each(|mut ep| {
|
episodes.into_par_iter().for_each(|mut ep| {
|
||||||
if !Path::new(ep.local_uri().unwrap()).exists() {
|
if !Path::new(ep.local_uri().unwrap()).exists() {
|
||||||
ep.set_local_uri(None);
|
ep.set_local_uri(None);
|
||||||
let res = ep.save(&Arc::clone(db));
|
let res = ep.save();
|
||||||
if let Err(err) = res {
|
if let Err(err) = res {
|
||||||
error!("Error while trying to update episode: {:#?}", ep);
|
error!("Error while trying to update episode: {:#?}", ep);
|
||||||
error!("Error: {}", err);
|
error!("Error: {}", err);
|
||||||
@ -67,10 +66,10 @@ fn download_checker(db: &Database) -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Write unit test.
|
// TODO: Write unit test.
|
||||||
fn played_cleaner(db: &Database) -> Result<()> {
|
fn played_cleaner() -> Result<()> {
|
||||||
let episodes = {
|
let episodes = {
|
||||||
let tempdb = db.lock().unwrap();
|
let tempdb = POOL.clone().get().unwrap();
|
||||||
dbqueries::get_played_episodes(&tempdb)?
|
dbqueries::get_played_episodes(&*tempdb)?
|
||||||
};
|
};
|
||||||
|
|
||||||
let now_utc = Utc::now().timestamp() as i32;
|
let now_utc = Utc::now().timestamp() as i32;
|
||||||
@ -80,7 +79,7 @@ fn played_cleaner(db: &Database) -> Result<()> {
|
|||||||
// TODO: expose a config and a user set option.
|
// TODO: expose a config and a user set option.
|
||||||
let limit = played + 172_800; // add 2days in seconds
|
let limit = played + 172_800; // add 2days in seconds
|
||||||
if now_utc > limit {
|
if now_utc > limit {
|
||||||
let e = delete_local_content(&Arc::clone(db), &mut ep);
|
let e = delete_local_content(&mut ep);
|
||||||
if let Err(err) = e {
|
if let Err(err) = e {
|
||||||
error!("Error while trying to delete file: {:?}", ep.local_uri());
|
error!("Error while trying to delete file: {:?}", ep.local_uri());
|
||||||
error!("Error: {}", err);
|
error!("Error: {}", err);
|
||||||
@ -94,14 +93,14 @@ fn played_cleaner(db: &Database) -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Write unit test.
|
// TODO: Write unit test.
|
||||||
pub fn delete_local_content(db: &Database, ep: &mut Episode) -> Result<()> {
|
pub fn delete_local_content(ep: &mut Episode) -> Result<()> {
|
||||||
if ep.local_uri().is_some() {
|
if ep.local_uri().is_some() {
|
||||||
let uri = ep.local_uri().unwrap().to_owned();
|
let uri = ep.local_uri().unwrap().to_owned();
|
||||||
if Path::new(&uri).exists() {
|
if Path::new(&uri).exists() {
|
||||||
let res = fs::remove_file(&uri);
|
let res = fs::remove_file(&uri);
|
||||||
if res.is_ok() {
|
if res.is_ok() {
|
||||||
ep.set_local_uri(None);
|
ep.set_local_uri(None);
|
||||||
ep.save(db)?;
|
ep.save()?;
|
||||||
} else {
|
} else {
|
||||||
error!("Error while trying to delete file: {}", uri);
|
error!("Error while trying to delete file: {}", uri);
|
||||||
error!("Error: {}", res.unwrap_err());
|
error!("Error: {}", res.unwrap_err());
|
||||||
@ -116,15 +115,15 @@ pub fn delete_local_content(db: &Database, ep: &mut Episode) -> Result<()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_played_now(db: &Database, ep: &mut Episode) -> Result<()> {
|
pub fn set_played_now(ep: &mut Episode) -> Result<()> {
|
||||||
let epoch = Utc::now().timestamp() as i32;
|
let epoch = Utc::now().timestamp() as i32;
|
||||||
ep.set_played(Some(epoch));
|
ep.set_played(Some(epoch));
|
||||||
ep.save(db)?;
|
ep.save()?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn checkup(db: &Database) -> Result<()> {
|
pub fn checkup() -> Result<()> {
|
||||||
download_checker(db)?;
|
download_checker()?;
|
||||||
played_cleaner(db)?;
|
played_cleaner()?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,6 @@ use std::io::{BufWriter, Read, Write};
|
|||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
use errors::*;
|
use errors::*;
|
||||||
use hammond_data::Database;
|
|
||||||
use hammond_data::models::{Episode, Podcast};
|
use hammond_data::models::{Episode, Podcast};
|
||||||
use hammond_data::{DL_DIR, HAMMOND_CACHE};
|
use hammond_data::{DL_DIR, HAMMOND_CACHE};
|
||||||
|
|
||||||
@ -118,7 +117,7 @@ pub fn get_download_folder(pd_title: &str) -> Result<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Refactor
|
// TODO: Refactor
|
||||||
pub fn get_episode(connection: &Database, ep: &mut Episode, download_folder: &str) -> Result<()> {
|
pub fn get_episode(ep: &mut Episode, download_folder: &str) -> Result<()> {
|
||||||
// Check if its alrdy downloaded
|
// Check if its alrdy downloaded
|
||||||
if ep.local_uri().is_some() {
|
if ep.local_uri().is_some() {
|
||||||
if Path::new(ep.local_uri().unwrap()).exists() {
|
if Path::new(ep.local_uri().unwrap()).exists() {
|
||||||
@ -127,7 +126,7 @@ pub fn get_episode(connection: &Database, ep: &mut Episode, download_folder: &st
|
|||||||
|
|
||||||
// If the path is not valid, then set it to None.
|
// If the path is not valid, then set it to None.
|
||||||
ep.set_local_uri(None);
|
ep.set_local_uri(None);
|
||||||
ep.save(connection)?;
|
ep.save()?;
|
||||||
};
|
};
|
||||||
|
|
||||||
let res = download_into(download_folder, ep.title().unwrap(), ep.uri());
|
let res = download_into(download_folder, ep.title().unwrap(), ep.uri());
|
||||||
@ -135,7 +134,7 @@ pub fn get_episode(connection: &Database, ep: &mut Episode, download_folder: &st
|
|||||||
if let Ok(path) = res {
|
if let Ok(path) = res {
|
||||||
// If download succedes set episode local_uri to dlpath.
|
// If download succedes set episode local_uri to dlpath.
|
||||||
ep.set_local_uri(Some(&path));
|
ep.set_local_uri(Some(&path));
|
||||||
ep.save(connection)?;
|
ep.save()?;
|
||||||
Ok(())
|
Ok(())
|
||||||
} else {
|
} else {
|
||||||
error!("Something whent wrong while downloading.");
|
error!("Something whent wrong while downloading.");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user