1mod extend;
4mod get;
5mod insert;
6mod iter;
7mod latest;
8mod misc;
9mod new;
10mod providers;
11
12pub use insert::{InsertError, InsertNewerReturn};
13pub use iter::{
14 Entries, EntriesMut, LatestEntries, LatestEntriesMut, LatestQueriers, LatestQueriersMut,
15 MultiEntries, MultiEntriesMut, MultiOwnedEntries, MultiQueriers, MultiQueriersMut, Names,
16 OwnedEntries, Queriers, QueriersMut, RepositoryNames,
17};
18pub use providers::{AlternativeProviders, AlternativeProvidersMut};
19
20use crate::{misc::Attached, value::RepositoryName};
21use arch_pkg_text::{
22 desc::{EagerQuerier, MemoQuerier},
23 value::ParsedVersion,
24};
25use std::collections::HashMap;
26
27type WithVersion<'a, Querier> = Attached<Querier, ParsedVersion<'a>>;
29
30type WithRepository<'a, Querier> = Attached<Querier, RepositoryName<'a>>;
32
33type LatestQuerier<'a, Querier> = WithRepository<'a, WithVersion<'a, Querier>>;
35
36#[derive(Debug, Clone)]
38pub struct MultiQuerier<'a, Querier> {
39 internal: HashMap<&'a str, WithVersion<'a, Querier>>,
41}
42
43#[derive(Debug, Clone)]
48pub struct MultiQueryDatabase<'a, Querier> {
49 internal: HashMap<&'a str, MultiQuerier<'a, Querier>>,
51}
52
53#[derive(Debug, Clone, Copy)]
55pub struct MultiQueryDatabaseLatest<Ref> {
56 base: Ref,
57}
58
59pub type EagerMultiQueryDatabase<'a> = MultiQueryDatabase<'a, EagerQuerier<'a>>;
61
62pub type MemoMultiQueryDatabase<'a> = MultiQueryDatabase<'a, MemoQuerier<'a>>;
64
65pub type EagerMultiQueryDatabaseLatest<'r, 'a> =
67 MultiQueryDatabaseLatest<&'r EagerMultiQueryDatabase<'a>>;
68
69pub type MemoMultiQueryDatabaseLatest<'r, 'a> =
71 MultiQueryDatabaseLatest<&'r mut MemoMultiQueryDatabase<'a>>;