Renamed watched field in the episode table of the database to played.
This commit is contained in:
parent
25344aa613
commit
faf4a4bce0
@ -20,7 +20,7 @@ CREATE TABLE `episode` (
|
|||||||
`epoch` INTEGER NOT NULL DEFAULT 0,
|
`epoch` INTEGER NOT NULL DEFAULT 0,
|
||||||
`length` INTEGER,
|
`length` INTEGER,
|
||||||
`guid` TEXT,
|
`guid` TEXT,
|
||||||
`watched` INTEGER ,
|
`played` INTEGER ,
|
||||||
`podcast_id` INTEGER NOT NULL
|
`podcast_id` INTEGER NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -32,18 +32,18 @@ fn download_checker(db: &Database) -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Write unit test.
|
// TODO: Write unit test.
|
||||||
fn watched_cleaner(db: &Database) -> Result<()> {
|
fn played_cleaner(db: &Database) -> Result<()> {
|
||||||
let mut episodes = {
|
let mut episodes = {
|
||||||
let tempdb = db.lock().unwrap();
|
let tempdb = db.lock().unwrap();
|
||||||
dbqueries::get_watched_episodes(&tempdb)?
|
dbqueries::get_played_episodes(&tempdb)?
|
||||||
};
|
};
|
||||||
|
|
||||||
let now_utc = Utc::now().timestamp() as i32;
|
let now_utc = Utc::now().timestamp() as i32;
|
||||||
episodes.par_iter_mut().for_each(|mut ep| {
|
episodes.par_iter_mut().for_each(|mut ep| {
|
||||||
if ep.local_uri().is_some() && ep.watched().is_some() {
|
if ep.local_uri().is_some() && ep.played().is_some() {
|
||||||
let watched = ep.watched().unwrap();
|
let played = ep.played().unwrap();
|
||||||
// TODO: expose a config and a user set option.
|
// TODO: expose a config and a user set option.
|
||||||
let limit = watched + 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(&Arc::clone(db), &mut ep);
|
||||||
if let Err(err) = e {
|
if let Err(err) = e {
|
||||||
@ -79,15 +79,15 @@ pub fn delete_local_content(db: &Database, ep: &mut Episode) -> Result<()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_watched_now(db: &Database, ep: &mut Episode) -> Result<()> {
|
pub fn set_played_now(db: &Database, ep: &mut Episode) -> Result<()> {
|
||||||
let epoch = Utc::now().timestamp() as i32;
|
let epoch = Utc::now().timestamp() as i32;
|
||||||
ep.set_watched(Some(epoch));
|
ep.set_played(Some(epoch));
|
||||||
ep.save(db)?;
|
ep.save(db)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn run(db: &Database) -> Result<()> {
|
pub fn run(db: &Database) -> Result<()> {
|
||||||
download_checker(db)?;
|
download_checker(db)?;
|
||||||
watched_cleaner(db)?;
|
played_cleaner(db)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,10 +45,10 @@ pub fn get_downloaded_episodes(con: &SqliteConnection) -> QueryResult<Vec<Episod
|
|||||||
eps
|
eps
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_watched_episodes(con: &SqliteConnection) -> QueryResult<Vec<Episode>> {
|
pub fn get_played_episodes(con: &SqliteConnection) -> QueryResult<Vec<Episode>> {
|
||||||
use schema::episode::dsl::*;
|
use schema::episode::dsl::*;
|
||||||
|
|
||||||
let eps = episode.filter(watched.is_not_null()).load::<Episode>(con);
|
let eps = episode.filter(played.is_not_null()).load::<Episode>(con);
|
||||||
eps
|
eps
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ pub fn get_pd_unplayed_episodes(
|
|||||||
use schema::episode::dsl::*;
|
use schema::episode::dsl::*;
|
||||||
|
|
||||||
let eps = Episode::belonging_to(parent)
|
let eps = Episode::belonging_to(parent)
|
||||||
.filter(watched.is_null())
|
.filter(played.is_null())
|
||||||
.order(epoch.desc())
|
.order(epoch.desc())
|
||||||
.load::<Episode>(con);
|
.load::<Episode>(con);
|
||||||
eps
|
eps
|
||||||
@ -185,8 +185,8 @@ pub fn update_none_to_played_now(connection: &SqliteConnection, parent: &Podcast
|
|||||||
use schema::episode::dsl::*;
|
use schema::episode::dsl::*;
|
||||||
|
|
||||||
let epoch_now = Utc::now().timestamp() as i32;
|
let epoch_now = Utc::now().timestamp() as i32;
|
||||||
diesel::update(Episode::belonging_to(parent).filter(watched.is_null()))
|
diesel::update(Episode::belonging_to(parent).filter(played.is_null()))
|
||||||
.set(watched.eq(Some(epoch_now)))
|
.set(played.eq(Some(epoch_now)))
|
||||||
.execute(connection)?;
|
.execute(connection)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@ -22,8 +22,8 @@ pub struct Episode {
|
|||||||
epoch: i32,
|
epoch: i32,
|
||||||
length: Option<i32>,
|
length: Option<i32>,
|
||||||
guid: Option<String>,
|
guid: Option<String>,
|
||||||
/// Represent the epoch value of when the episode was last watched.
|
/// Represent the epoch value of when the episode was last played.
|
||||||
watched: Option<i32>,
|
played: Option<i32>,
|
||||||
podcast_id: i32,
|
podcast_id: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,12 +97,12 @@ impl Episode {
|
|||||||
self.length = value;
|
self.length = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn watched(&self) -> Option<i32> {
|
pub fn played(&self) -> Option<i32> {
|
||||||
self.watched
|
self.played
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_watched(&mut self, value: Option<i32>) {
|
pub fn set_played(&mut self, value: Option<i32>) {
|
||||||
self.watched = value;
|
self.played = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn save(&self, db: &Database) -> Result<()> {
|
pub fn save(&self, db: &Database) -> Result<()> {
|
||||||
|
|||||||
@ -9,7 +9,7 @@ table! {
|
|||||||
epoch -> Integer,
|
epoch -> Integer,
|
||||||
length -> Nullable<Integer>,
|
length -> Nullable<Integer>,
|
||||||
guid -> Nullable<Text>,
|
guid -> Nullable<Text>,
|
||||||
watched -> Nullable<Integer>,
|
played -> Nullable<Integer>,
|
||||||
podcast_id -> Integer,
|
podcast_id -> Integer,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -75,7 +75,7 @@ fn epidose_widget(db: &Database, episode: &mut Episode, pd_title: &str) -> gtk::
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if episode.watched().is_some() {
|
if episode.played().is_some() {
|
||||||
unplayed_button.show();
|
unplayed_button.show();
|
||||||
played_button.hide();
|
played_button.hide();
|
||||||
}
|
}
|
||||||
@ -90,7 +90,7 @@ fn epidose_widget(db: &Database, episode: &mut Episode, pd_title: &str) -> gtk::
|
|||||||
|
|
||||||
play_button.connect_clicked(clone!(db, episode => move |_| {
|
play_button.connect_clicked(clone!(db, episode => move |_| {
|
||||||
on_play_bttn_clicked(&db, episode.id());
|
on_play_bttn_clicked(&db, episode.id());
|
||||||
let _ = set_watched_now(&db, &mut episode.clone());
|
let _ = set_played_now(&db, &mut episode.clone());
|
||||||
}));
|
}));
|
||||||
|
|
||||||
delete_button.connect_clicked(
|
delete_button.connect_clicked(
|
||||||
@ -102,15 +102,15 @@ fn epidose_widget(db: &Database, episode: &mut Episode, pd_title: &str) -> gtk::
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
played_button.connect_clicked(clone!(db, episode, unplayed_button => move |watched| {
|
played_button.connect_clicked(clone!(db, episode, unplayed_button => move |played| {
|
||||||
let _ = set_watched_now(&db, &mut episode.clone());
|
let _ = set_played_now(&db, &mut episode.clone());
|
||||||
watched.hide();
|
played.hide();
|
||||||
unplayed_button.show();
|
unplayed_button.show();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
unplayed_button.connect_clicked(clone!(db, episode, played_button => move |un| {
|
unplayed_button.connect_clicked(clone!(db, episode, played_button => move |un| {
|
||||||
let mut episode = episode.clone();
|
let mut episode = episode.clone();
|
||||||
episode.set_watched(None);
|
episode.set_played(None);
|
||||||
let _ = episode.save(&db);
|
let _ = episode.save(&db);
|
||||||
un.hide();
|
un.hide();
|
||||||
played_button.show();
|
played_button.show();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user