diff options
author | Carpenter, Adam (CORP) <adam.carpenter@adp.com> | 2021-11-26 16:06:17 -0500 |
---|---|---|
committer | Carpenter, Adam (CORP) <adam.carpenter@adp.com> | 2021-11-26 16:06:17 -0500 |
commit | 3acf604c92b64032885ef27d225efa1307a015ad (patch) | |
tree | c948965451fd2985649a6bda977b3aed69452cec /angelsharkd/src/routes/extensions | |
parent | 6dd3236069d5cbdd6cb946b408cd6efb7e91d0f9 (diff) | |
download | altruistic-angelshark-3acf604c92b64032885ef27d225efa1307a015ad.tar.xz altruistic-angelshark-3acf604c92b64032885ef27d225efa1307a015ad.zip |
feat: impl lazy-refreshing cache for quick access to be used for haystack
Diffstat (limited to 'angelsharkd/src/routes/extensions')
-rw-r--r-- | angelsharkd/src/routes/extensions/simple_search.rs | 31 |
1 files 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<Extract = impl Reply, Error = Reje .and_then(handle_simple_search) } -pub fn refresh() -> impl Filter<Extract = impl Reply, Error = Rejection> + Clone { +pub fn refresh(config: &Config) -> impl Filter<Extract = impl Reply, Error = Rejection> + Clone { + let runner = config.runner.clone(); path!("search" / "refresh") .and(get()) + .and(with_runner(runner)) .and_then(handle_refresh) } -async fn handle_refresh() -> Result<impl Reply, Infallible> { - fetch(String::from("test"), true); - Ok("") +async fn handle_refresh(runner: AcmRunner) -> Result<impl Reply, Infallible> { + get_extensions_cached(true); + Ok("Refresh scheduled") } async fn handle_simple_search(terms: Terms, runner: AcmRunner) -> Result<impl Reply, Infallible> { - 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!() } |