From 64ef7cb21ff6172674426a6d874e6dfc797b6955 Mon Sep 17 00:00:00 2001 From: Antoine Gersant Date: Mon, 29 Jul 2024 18:13:40 -0700 Subject: [PATCH] Index -> IndexManager --- src/app.rs | 8 ++++---- src/app/collection/index.rs | 24 ++++++++++++------------ src/app/collection/updater.rs | 16 ++++++++-------- src/app/test.rs | 8 ++++---- src/server/axum.rs | 4 ++-- src/server/axum/api.rs | 8 ++++---- 6 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/app.rs b/src/app.rs index cd76400..96ff2f1 100644 --- a/src/app.rs +++ b/src/app.rs @@ -37,7 +37,7 @@ pub struct App { pub swagger_dir_path: PathBuf, pub updater: collection::Updater, pub browser: collection::Browser, - pub index: collection::Index, + pub index_manager: collection::IndexManager, pub config_manager: config::Manager, pub ddns_manager: ddns::Manager, pub lastfm_manager: lastfm::Manager, @@ -65,11 +65,11 @@ impl App { let auth_secret = settings_manager.get_auth_secret().await?; let ddns_manager = ddns::Manager::new(db.clone()); let user_manager = user::Manager::new(db.clone(), auth_secret); - let index = collection::Index::new(); + let index_manager = collection::IndexManager::new(); let browser = collection::Browser::new(db.clone(), vfs_manager.clone()); let updater = collection::Updater::new( db.clone(), - index.clone(), + index_manager.clone(), settings_manager.clone(), vfs_manager.clone(), ); @@ -94,7 +94,7 @@ impl App { swagger_dir_path: paths.swagger_dir_path, updater, browser, - index, + index_manager, config_manager, ddns_manager, lastfm_manager, diff --git a/src/app/collection/index.rs b/src/app/collection/index.rs index 22e9613..93a56c0 100644 --- a/src/app/collection/index.rs +++ b/src/app/collection/index.rs @@ -9,27 +9,27 @@ use tokio::sync::RwLock; use crate::app::collection; #[derive(Clone)] -pub struct Index { - lookups: Arc>, +pub struct IndexManager { + index: Arc>, } -impl Index { +impl IndexManager { pub fn new() -> Self { Self { - lookups: Arc::default(), + index: Arc::default(), } } - pub(super) async fn replace_lookup_tables(&mut self, new_lookups: Lookups) { - let mut lock = self.lookups.write().await; - *lock = new_lookups; + pub(super) async fn replace_index(&mut self, new_index: Index) { + let mut lock = self.index.write().await; + *lock = new_index; } pub async fn get_random_albums( &self, count: usize, ) -> Result, collection::Error> { - let lookups = self.lookups.read().await; + let lookups = self.index.read().await; Ok(lookups .songs_by_albums .keys() @@ -56,12 +56,12 @@ struct AlbumKey { } #[derive(Default)] -pub(super) struct Lookups { +pub(super) struct Index { all_songs: HashMap, songs_by_albums: HashMap>, // TODO should this store collection::Album structs instead? } -impl Lookups { +impl Index { pub fn add_song(&mut self, song: &collection::Song) { self.all_songs .insert(song.virtual_path.clone(), song.clone()); @@ -125,7 +125,7 @@ mod test { .build() .await; ctx.updater.update().await.unwrap(); - let albums = ctx.index.get_random_albums(1).await.unwrap(); + let albums = ctx.index_manager.get_random_albums(1).await.unwrap(); assert_eq!(albums.len(), 1); } @@ -136,7 +136,7 @@ mod test { .build() .await; ctx.updater.update().await.unwrap(); - let albums = ctx.index.get_recent_albums(2).await.unwrap(); + let albums = ctx.index_manager.get_recent_albums(2).await.unwrap(); assert_eq!(albums.len(), 2); } } diff --git a/src/app/collection/updater.rs b/src/app/collection/updater.rs index d33f828..5213095 100644 --- a/src/app/collection/updater.rs +++ b/src/app/collection/updater.rs @@ -14,7 +14,7 @@ use crate::{ #[derive(Clone)] pub struct Updater { db: DB, - index: Index, + index_manager: IndexManager, settings_manager: settings::Manager, vfs_manager: vfs::Manager, pending_scan: Arc, @@ -23,13 +23,13 @@ pub struct Updater { impl Updater { pub fn new( db: DB, - index: Index, + index_manager: IndexManager, settings_manager: settings::Manager, vfs_manager: vfs::Manager, ) -> Self { let updater = Self { db, - index, + index_manager, vfs_manager, settings_manager, pending_scan: Arc::new(Notify::new()), @@ -123,7 +123,7 @@ impl Updater { let song_task = tokio::spawn(async move { let capacity = 500; - let mut lookup_tables = Lookups::default(); + let mut index = Index::default(); let mut buffer: Vec = Vec::with_capacity(capacity); loop { @@ -134,18 +134,18 @@ impl Updater { 0 => break, _ => { for song in buffer.drain(0..) { - lookup_tables.add_song(&song); + index.add_song(&song); song_inserter.insert(song).await; } } } } song_inserter.flush().await; - lookup_tables + index }); - let lookup_tables = tokio::join!(scanner.scan(), directory_task, song_task).2?; - self.index.replace_lookup_tables(lookup_tables).await; + let index = tokio::join!(scanner.scan(), directory_task, song_task).2?; + self.index_manager.replace_index(index).await; info!( "Library index update took {} seconds", diff --git a/src/app/test.rs b/src/app/test.rs index a135bc5..beba59c 100644 --- a/src/app/test.rs +++ b/src/app/test.rs @@ -7,7 +7,7 @@ use crate::test::*; pub struct Context { pub db: DB, pub browser: collection::Browser, - pub index: collection::Index, + pub index_manager: collection::IndexManager, pub updater: collection::Updater, pub config_manager: config::Manager, pub ddns_manager: ddns::Manager, @@ -68,10 +68,10 @@ impl ContextBuilder { ddns_manager.clone(), ); let browser = collection::Browser::new(db.clone(), vfs_manager.clone()); - let index = collection::Index::new(); + let index_manager = collection::IndexManager::new(); let updater = collection::Updater::new( db.clone(), - index.clone(), + index_manager.clone(), settings_manager.clone(), vfs_manager.clone(), ); @@ -82,7 +82,7 @@ impl ContextBuilder { Context { db, browser, - index, + index_manager, updater, config_manager, ddns_manager, diff --git a/src/server/axum.rs b/src/server/axum.rs index 7a9ac71..58a88d8 100644 --- a/src/server/axum.rs +++ b/src/server/axum.rs @@ -33,9 +33,9 @@ impl FromRef for app::collection::Browser { } } -impl FromRef for app::collection::Index { +impl FromRef for app::collection::IndexManager { fn from_ref(app: &App) -> Self { - app.index.clone() + app.index_manager.clone() } } diff --git a/src/server/axum/api.rs b/src/server/axum/api.rs index 4462534..b1f83de 100644 --- a/src/server/axum/api.rs +++ b/src/server/axum/api.rs @@ -368,9 +368,9 @@ async fn get_flatten( async fn get_random( _auth: Auth, api_version: APIMajorVersion, - State(index): State, + State(index_manager): State, ) -> Response { - let albums = match index.get_random_albums(20).await { + let albums = match index_manager.get_random_albums(20).await { Ok(d) => d, Err(e) => return APIError::from(e).into_response(), }; @@ -380,9 +380,9 @@ async fn get_random( async fn get_recent( _auth: Auth, api_version: APIMajorVersion, - State(index): State, + State(index_manager): State, ) -> Response { - let albums = match index.get_recent_albums(20).await { + let albums = match index_manager.get_recent_albums(20).await { Ok(d) => d, Err(e) => return APIError::from(e).into_response(), };