tdm_server_rust/cache/
invalidate.rs1use crate::app::AppState;
14use crate::cache::{
15 invalidate_all_member_workbenches, invalidate_auth_snapshot, invalidate_episode_statistics,
16 invalidate_magazine_manga_caches, invalidate_manga_episode_caches, invalidate_manga_names,
17 invalidate_manga_page_caches, invalidate_member_all, invalidate_member_episodes,
18 invalidate_member_page_caches, invalidate_member_workbench, invalidate_stationed_mangas,
19 invalidate_task_tracking, invalidate_uploaded_submit_caches,
20};
21
22pub async fn on_episode_mutated(state: &AppState, manga_id: i32, member_ids: &[i32]) {
24 let member_cache = async {
25 if member_ids.is_empty() {
26 invalidate_all_member_workbenches(state).await;
27 }
28 for &id in member_ids {
29 invalidate_member_episodes(state, id).await;
30 invalidate_member_workbench(state, id).await;
31 }
32 };
33 let _ = tokio::join!(
34 invalidate_manga_episode_caches(state, manga_id),
35 invalidate_uploaded_submit_caches(state),
36 invalidate_task_tracking(state),
37 invalidate_episode_statistics(state),
38 member_cache,
39 );
40}
41
42pub async fn on_manga_mutated(state: &AppState, manga_id: Option<i32>) {
44 invalidate_manga_names(state).await;
45 invalidate_manga_page_caches(state).await;
46 invalidate_magazine_manga_caches(state).await;
47 invalidate_all_member_workbenches(state).await;
48 if let Some(id) = manga_id {
49 invalidate_manga_episode_caches(state, id).await;
50 invalidate_uploaded_submit_caches(state).await;
51 invalidate_task_tracking(state).await;
52 invalidate_episode_statistics(state).await;
53 }
54}
55
56pub async fn on_member_mutated(state: &AppState, member_ids: &[i32]) {
58 invalidate_member_all(state).await;
59 invalidate_member_page_caches(state).await;
60 for &id in member_ids {
61 invalidate_auth_snapshot(state, id).await;
62 invalidate_member_episodes(state, id).await;
63 invalidate_member_workbench(state, id).await;
64 }
65}
66
67pub async fn on_station_mutated(state: &AppState, manga_id: i32, member_id: i32) {
69 invalidate_stationed_mangas(state, member_id).await;
70 on_episode_mutated(state, manga_id, &[member_id]).await;
71}
72
73pub async fn on_author_or_magazine_renamed(state: &AppState) {
75 invalidate_manga_page_caches(state).await;
76 invalidate_magazine_manga_caches(state).await;
77}