Split hammond-data/models into sub modules.
This commit is contained in:
parent
118846f255
commit
cfb876e006
45
hammond-data/src/models/insertables.rs
Normal file
45
hammond-data/src/models/insertables.rs
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
use schema::{episode, podcast, source};
|
||||||
|
|
||||||
|
#[derive(Insertable)]
|
||||||
|
#[table_name = "source"]
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct NewSource<'a> {
|
||||||
|
pub uri: &'a str,
|
||||||
|
pub last_modified: Option<&'a str>,
|
||||||
|
pub http_etag: Option<&'a str>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> NewSource<'a> {
|
||||||
|
pub fn new_with_uri(uri: &'a str) -> NewSource {
|
||||||
|
NewSource {
|
||||||
|
uri,
|
||||||
|
last_modified: None,
|
||||||
|
http_etag: None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Insertable)]
|
||||||
|
#[table_name = "episode"]
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct NewEpisode<'a> {
|
||||||
|
pub title: Option<&'a str>,
|
||||||
|
pub uri: Option<&'a str>,
|
||||||
|
pub description: Option<&'a str>,
|
||||||
|
pub published_date: Option<String>,
|
||||||
|
pub length: Option<i32>,
|
||||||
|
pub guid: Option<&'a str>,
|
||||||
|
pub epoch: i32,
|
||||||
|
pub podcast_id: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Insertable)]
|
||||||
|
#[table_name = "podcast"]
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct NewPodcast {
|
||||||
|
pub title: String,
|
||||||
|
pub link: String,
|
||||||
|
pub description: String,
|
||||||
|
pub image_uri: Option<String>,
|
||||||
|
pub source_id: i32,
|
||||||
|
}
|
||||||
6
hammond-data/src/models/mod.rs
Normal file
6
hammond-data/src/models/mod.rs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
mod insertables;
|
||||||
|
mod queryables;
|
||||||
|
|
||||||
|
// Re-export the structs so the API doesn't change and brake everything else.
|
||||||
|
pub use self::queryables::{Episode, Podcast, Source};
|
||||||
|
pub use self::insertables::{NewEpisode, NewPodcast, NewSource};
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
use reqwest;
|
use reqwest;
|
||||||
use diesel::SaveChangesDsl;
|
use diesel::SaveChangesDsl;
|
||||||
use diesel::result::QueryResult;
|
use diesel::result::QueryResult;
|
||||||
@ -7,6 +8,8 @@ use schema::{episode, podcast, source};
|
|||||||
use index_feed::Database;
|
use index_feed::Database;
|
||||||
use errors::*;
|
use errors::*;
|
||||||
|
|
||||||
|
use models::insertables::NewPodcast;
|
||||||
|
|
||||||
#[derive(Queryable, Identifiable, AsChangeset, Associations)]
|
#[derive(Queryable, Identifiable, AsChangeset, Associations)]
|
||||||
#[table_name = "episode"]
|
#[table_name = "episode"]
|
||||||
#[changeset_options(treat_none_as_null = "true")]
|
#[changeset_options(treat_none_as_null = "true")]
|
||||||
@ -147,6 +150,23 @@ pub struct Podcast {
|
|||||||
source_id: i32,
|
source_id: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// This is meant only to be used to make unit tests easier.
|
||||||
|
impl From<NewPodcast> for Podcast {
|
||||||
|
fn from(pd: NewPodcast) -> Podcast {
|
||||||
|
Podcast {
|
||||||
|
id: 0,
|
||||||
|
title: pd.title,
|
||||||
|
link: pd.link,
|
||||||
|
description: pd.description,
|
||||||
|
image_uri: pd.image_uri,
|
||||||
|
source_id: pd.source_id,
|
||||||
|
always_dl: false,
|
||||||
|
archive: false,
|
||||||
|
favorite: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Podcast {
|
impl Podcast {
|
||||||
pub fn id(&self) -> i32 {
|
pub fn id(&self) -> i32 {
|
||||||
self.id
|
self.id
|
||||||
@ -276,64 +296,3 @@ impl<'a> Source {
|
|||||||
self.save_changes::<Source>(&*tempdb)
|
self.save_changes::<Source>(&*tempdb)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Insertable)]
|
|
||||||
#[table_name = "source"]
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
pub struct NewSource<'a> {
|
|
||||||
pub uri: &'a str,
|
|
||||||
pub last_modified: Option<&'a str>,
|
|
||||||
pub http_etag: Option<&'a str>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> NewSource<'a> {
|
|
||||||
pub fn new_with_uri(uri: &'a str) -> NewSource {
|
|
||||||
NewSource {
|
|
||||||
uri,
|
|
||||||
last_modified: None,
|
|
||||||
http_etag: None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Insertable)]
|
|
||||||
#[table_name = "episode"]
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
pub struct NewEpisode<'a> {
|
|
||||||
pub title: Option<&'a str>,
|
|
||||||
pub uri: Option<&'a str>,
|
|
||||||
pub description: Option<&'a str>,
|
|
||||||
pub published_date: Option<String>,
|
|
||||||
pub length: Option<i32>,
|
|
||||||
pub guid: Option<&'a str>,
|
|
||||||
pub epoch: i32,
|
|
||||||
pub podcast_id: i32,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Insertable)]
|
|
||||||
#[table_name = "podcast"]
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
pub struct NewPodcast {
|
|
||||||
pub title: String,
|
|
||||||
pub link: String,
|
|
||||||
pub description: String,
|
|
||||||
pub image_uri: Option<String>,
|
|
||||||
pub source_id: i32,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl NewPodcast {
|
|
||||||
// This is meant only to be used to make unit tests easier.
|
|
||||||
pub fn into_podcast(self) -> Podcast {
|
|
||||||
Podcast {
|
|
||||||
id: 0,
|
|
||||||
title: self.title,
|
|
||||||
link: self.link,
|
|
||||||
description: self.description,
|
|
||||||
image_uri: self.image_uri,
|
|
||||||
source_id: self.source_id,
|
|
||||||
always_dl: false,
|
|
||||||
archive: false,
|
|
||||||
favorite: false,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -215,7 +215,7 @@ mod tests {
|
|||||||
image_uri: Some("http://newrustacean.com/podcast.png".to_string()),
|
image_uri: Some("http://newrustacean.com/podcast.png".to_string()),
|
||||||
source_id: 0,
|
source_id: 0,
|
||||||
};
|
};
|
||||||
let pd = pd.into_podcast();
|
let pd = Podcast::from(pd);
|
||||||
let img_path = cache_image(&pd);
|
let img_path = cache_image(&pd);
|
||||||
let foo_ = format!(
|
let foo_ = format!(
|
||||||
"{}{}/cover.png",
|
"{}{}/cover.png",
|
||||||
|
|||||||
@ -142,7 +142,7 @@ mod tests {
|
|||||||
image_uri: Some("http://newrustacean.com/podcast.png".to_string()),
|
image_uri: Some("http://newrustacean.com/podcast.png".to_string()),
|
||||||
source_id: 0,
|
source_id: 0,
|
||||||
};
|
};
|
||||||
let pd = pd.into_podcast();
|
let pd = Podcast::from(pd);
|
||||||
|
|
||||||
let pxbuf = get_pixbuf_from_path(&pd);
|
let pxbuf = get_pixbuf_from_path(&pd);
|
||||||
assert!(pxbuf.is_some());
|
assert!(pxbuf.is_some());
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user