1use super::{
2 LatestQuerier, MultiQuerier, MultiQueryDatabase, MultiQueryDatabaseLatest, WithVersion,
3};
4use crate::{misc::AttachedUtils, value::RepositoryName};
5use arch_pkg_text::value::Name;
6
7impl<'a, Querier> MultiQueryDatabase<'a, Querier> {
8 pub fn get(&self, name: Name) -> Option<&MultiQuerier<'a, Querier>> {
11 self.internal.get(name.as_str())
12 }
13
14 pub fn get_mut(&mut self, name: Name) -> Option<&mut MultiQuerier<'a, Querier>> {
17 self.internal.get_mut(name.as_str())
18 }
19}
20
21impl<Querier> MultiQuerier<'_, Querier> {
22 pub fn get(&self, repository: RepositoryName) -> Option<WithVersion<'_, &Querier>> {
24 self.internal
25 .get(repository.as_str())
26 .map(AttachedUtils::as_deref)
27 .map(AttachedUtils::copied_attachment)
28 }
29
30 pub fn get_mut(&mut self, repository: RepositoryName) -> Option<WithVersion<'_, &mut Querier>> {
32 self.internal
33 .get_mut(repository.as_str())
34 .map(AttachedUtils::as_deref_mut)
35 .map(AttachedUtils::copied_attachment)
36 }
37}
38
39impl<'r, 'a, Querier> MultiQueryDatabaseLatest<&'r MultiQueryDatabase<'a, Querier>> {
40 pub fn get(&self, name: Name) -> Option<LatestQuerier<'a, &'r Querier>> {
42 self.base.get(name)?.latest()
43 }
44}
45
46impl<'a, Querier> MultiQueryDatabaseLatest<&mut MultiQueryDatabase<'a, Querier>> {
47 pub fn get_mut(&mut self, name: Name) -> Option<LatestQuerier<'a, &mut Querier>> {
49 self.base.get_mut(name)?.latest_mut()
50 }
51}