aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--yt/src/storage/video_database/set/mod.rs43
1 files changed, 16 insertions, 27 deletions
diff --git a/yt/src/storage/video_database/set/mod.rs b/yt/src/storage/video_database/set/mod.rs
index 4006fde..3d68ce8 100644
--- a/yt/src/storage/video_database/set/mod.rs
+++ b/yt/src/storage/video_database/set/mod.rs
@@ -56,7 +56,7 @@ pub async fn video_status(
};
let old_marker = old.status.as_marker();
- let cache_path = {
+ let (cache_path, is_focused) = {
fn cache_path_to_string(path: &Path) -> Result<String> {
Ok(path
.to_str()
@@ -69,13 +69,14 @@ pub async fn video_status(
.to_owned())
}
- match (old_marker, &new_status) {
- (VideoStatusMarker::Cached, VideoStatus::Cached { cache_path, .. }) => {
- Some(cache_path_to_string(cache_path)?)
- }
- (_, VideoStatus::Cached { cache_path, .. }) => Some(cache_path_to_string(cache_path)?),
-
- (VideoStatusMarker::Cached | _, _) => None,
+ if let VideoStatus::Cached {
+ cache_path,
+ is_focused,
+ } = &new_status
+ {
+ (Some(cache_path_to_string(cache_path)?), *is_focused)
+ } else {
+ (None, false)
}
};
@@ -98,13 +99,14 @@ pub async fn video_status(
query!(
r#"
UPDATE videos
- SET status = ?, last_status_change = ?, priority = ?, cache_path = ?
+ SET status = ?, last_status_change = ?, priority = ?, cache_path = ?, is_focused = ?
WHERE extractor_hash = ?;
"#,
new_status,
now,
new_priority,
cache_path,
+ is_focused,
video_hash
)
.execute(&app.database)
@@ -125,12 +127,13 @@ pub async fn video_status(
query!(
r#"
UPDATE videos
- SET status = ?, last_status_change = ?, cache_path = ?
+ SET status = ?, last_status_change = ?, cache_path = ?, is_focused = ?
WHERE extractor_hash = ?;
"#,
new_status,
now,
cache_path,
+ is_focused,
video_hash
)
.execute(&app.database)
@@ -147,10 +150,9 @@ pub async fn video_status(
/// # Panics
/// Only if assertions fail.
pub async fn video_watched(app: &App, video: &ExtractorHash) -> Result<()> {
- let video_hash = video.hash().to_string();
- let new_status = VideoStatusMarker::Watched.as_db_integer();
-
let old = {
+ let video_hash = video.hash().to_string();
+
let base = query!(
r#"
SELECT *
@@ -175,20 +177,7 @@ pub async fn video_watched(app: &App, video: &ExtractorHash) -> Result<()> {
unreachable!("The video must be marked as Cached before it can be marked Watched");
}
- let now = Utc::now().timestamp();
-
- query!(
- r#"
- UPDATE videos
- SET status = ?, last_status_change = ?, cache_path = NULL
- WHERE extractor_hash = ?;
- "#,
- new_status,
- now,
- video_hash
- )
- .execute(&app.database)
- .await?;
+ video_status(app, video, VideoStatus::Watched, None).await?;
Ok(())
}