aboutsummaryrefslogtreecommitdiffstats
path: root/src/cache
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-10-14 14:56:29 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-10-14 14:56:29 +0200
commit6c9286857ef8b314962b67f4a16a66e8c35531bc (patch)
tree9ced4485ec38b39f82cba258c06321a21c40000a /src/cache
parentbuild(Cargo.toml): Add further lints (diff)
downloadyt-6c9286857ef8b314962b67f4a16a66e8c35531bc.zip
refactor(treewide): Combine the separate crates in one workspace
Diffstat (limited to 'src/cache')
-rw-r--r--src/cache/mod.rs88
1 files changed, 0 insertions, 88 deletions
diff --git a/src/cache/mod.rs b/src/cache/mod.rs
deleted file mode 100644
index a3e08c9..0000000
--- a/src/cache/mod.rs
+++ /dev/null
@@ -1,88 +0,0 @@
-// yt - A fully featured command line YouTube client
-//
-// Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de>
-// SPDX-License-Identifier: GPL-3.0-or-later
-//
-// This file is part of Yt.
-//
-// You should have received a copy of the License along with this program.
-// If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
-
-use anyhow::{Context, Result};
-use log::info;
-use tokio::fs;
-
-use crate::{
- app::App,
- storage::video_database::{
- downloader::set_video_cache_path, getters::get_videos, setters::set_state_change, Video,
- VideoStatus,
- },
-};
-
-async fn invalidate_video(app: &App, video: &Video, hard: bool) -> Result<()> {
- info!("Invalidating cache of video: '{}'", video.title);
-
- if hard {
- if let Some(path) = &video.cache_path {
- info!("Removing cached video at: '{}'", path.display());
- fs::remove_file(path).await.with_context(|| {
- format!(
- "Failed to delete video ('{}') cache path: '{}'.",
- video.title,
- path.display()
- )
- })?;
- }
- }
-
- set_video_cache_path(app, &video.extractor_hash, None).await?;
-
- Ok(())
-}
-
-pub async fn invalidate(app: &App, hard: bool) -> Result<()> {
- let all_cached_things = get_videos(app, &[VideoStatus::Cached], None).await?;
-
- info!("Got videos to invalidate: '{}'", all_cached_things.len());
-
- for video in all_cached_things {
- invalidate_video(app, &video, hard).await?
- }
-
- Ok(())
-}
-
-pub async fn maintain(app: &App, all: bool) -> Result<()> {
- let domain = if all {
- vec![
- VideoStatus::Pick,
- //
- VideoStatus::Watch,
- VideoStatus::Cached,
- VideoStatus::Watched,
- //
- VideoStatus::Drop,
- VideoStatus::Dropped,
- ]
- } else {
- vec![VideoStatus::Watch, VideoStatus::Cached]
- };
-
- let cached_videos = get_videos(app, domain.as_slice(), None).await?;
-
- for vid in cached_videos {
- if let Some(path) = vid.cache_path.as_ref() {
- info!("Checking if path ('{}') exists", path.display());
- if !path.exists() {
- invalidate_video(app, &vid, false).await?;
- }
- }
- if vid.status_change {
- info!("Video '{}' has it's changing bit set. This is probably the result of an unexpectet exit. Clearing it", vid.title);
- set_state_change(app, &vid.extractor_hash, false).await?;
- }
- }
-
- Ok(())
-}