1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use std::{collections::BTreeMap, sync::Arc};

use trustfall::{execute_query, FieldValue};

use crate::versioned::VersionedRustdocAdapter;

type QueryResult = BTreeMap<Arc<str>, FieldValue>;

impl<'a> VersionedRustdocAdapter<'a> {
    pub fn run_query<K: Into<Arc<str>>, V: Into<FieldValue>>(
        &self,
        query: &str,
        vars: BTreeMap<K, V>,
    ) -> anyhow::Result<Box<dyn Iterator<Item = QueryResult> + 'a>> {
        match self {
            #[cfg(feature = "v27")]
            VersionedRustdocAdapter::V27(_, adapter) => {
                execute_query(self.schema(), adapter.clone(), query, vars)
            }

            #[cfg(feature = "v28")]
            VersionedRustdocAdapter::V28(_, adapter) => {
                execute_query(self.schema(), adapter.clone(), query, vars)
            }

            #[cfg(feature = "v29")]
            VersionedRustdocAdapter::V29(_, adapter) => {
                execute_query(self.schema(), adapter.clone(), query, vars)
            }

            #[cfg(feature = "v30")]
            VersionedRustdocAdapter::V30(_, adapter) => {
                execute_query(self.schema(), adapter.clone(), query, vars)
            }
        }
    }
}