From 3acf604c92b64032885ef27d225efa1307a015ad Mon Sep 17 00:00:00 2001 From: "Carpenter, Adam (CORP)" Date: Fri, 26 Nov 2021 16:06:17 -0500 Subject: feat: impl lazy-refreshing cache for quick access to be used for haystack --- angelsharkd/src/routes/extensions/simple_search.rs | 31 +++++++++++++--------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/angelsharkd/src/routes/extensions/simple_search.rs b/angelsharkd/src/routes/extensions/simple_search.rs index 58f6e52..cf75c60 100644 --- a/angelsharkd/src/routes/extensions/simple_search.rs +++ b/angelsharkd/src/routes/extensions/simple_search.rs @@ -24,33 +24,40 @@ pub fn search(config: &Config) -> impl Filter impl Filter + Clone { +pub fn refresh(config: &Config) -> impl Filter + Clone { + let runner = config.runner.clone(); path!("search" / "refresh") .and(get()) + .and(with_runner(runner)) .and_then(handle_refresh) } -async fn handle_refresh() -> Result { - fetch(String::from("test"), true); - Ok("") +async fn handle_refresh(runner: AcmRunner) -> Result { + get_extensions_cached(true); + Ok("Refresh scheduled") } async fn handle_simple_search(terms: Terms, runner: AcmRunner) -> Result { - Ok(fetch(terms[0].clone(), false)) + Ok(get_extensions_cached(false)) } #[cached] -fn fetch(param: String, refresh: bool) -> String { +fn get_extensions_cached(refresh: bool) -> String { if refresh { - let param = param.clone(); tokio::spawn(async move { std::thread::sleep_ms(10000); - let mut handle = FETCH.lock().unwrap(); - handle.cache_clear(); - handle.cache_set((param.clone(), false), format!("blargh {}", param.clone())); - eprintln!("evicted"); + + if let Ok(mut handle) = GET_EXTENSIONS_CACHED.lock() { + handle.cache_clear(); + handle.cache_set(false, String::from("fresh")); + eprintln!("evicted"); + } }); } - param + String::from("stale") +} + +fn get_extensions(runner: AcmRunner) { + todo!() } -- cgit v1.2.3