arch_pkg_db/multi/
get.rs

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    /// Get an immutable reference to a set of queriers of packages from different repositories
9    /// by package name.
10    pub fn get(&self, name: Name) -> Option<&MultiQuerier<'a, Querier>> {
11        self.internal.get(name.as_str())
12    }
13
14    /// Get a mutable reference to a set of queriers of packages from different repositories
15    /// by package name.
16    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    /// Get an immutable reference to a querier by repository name.
23    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    /// Get a mutable reference to a querier by repository name.
31    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    /// Get an immutable reference to the querier of the latest version of a package by its name.
41    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    /// Get an mutable reference to the querier of the latest version of a package by its name.
48    pub fn get_mut(&mut self, name: Name) -> Option<LatestQuerier<'a, &mut Querier>> {
49        self.base.get_mut(name)?.latest_mut()
50    }
51}