use crate::state::{ CachedEntry, Organization, Project, SearchResults, TeamMember, User, Version, }; macro_rules! impl_cache_methods { ($(($variant:ident, $type:ty)),*) => { $( paste::paste! { #[tracing::instrument] pub async fn []( id: &str, ) -> crate::Result> { let state = crate::State::get().await?; Ok(CachedEntry::[](&[id], None, &state.pool, &state.api_semaphore).await?.into_iter().next()) } #[tracing::instrument] pub async fn []( ids: &[&str], ) -> crate::Result> { let state = crate::State::get().await?; let entries = CachedEntry::[](ids, None, &state.pool, &state.api_semaphore).await?; Ok(entries) } } )* } } impl_cache_methods!( (Project, Project), (Version, Version), (User, User), (Team, Vec), (Organization, Organization), (SearchResults, SearchResults) );