trustfall_rustdoc/
query.rs

1// AUTOGENERATED FROM template/query.rs.template; DO NOT EDIT DIRECTLY
2
3use std::{collections::BTreeMap, sync::Arc};
4
5use trustfall::{FieldValue, execute_query};
6
7use crate::versioned::VersionedRustdocAdapter;
8
9type QueryResult = BTreeMap<Arc<str>, FieldValue>;
10
11impl<'a> VersionedRustdocAdapter<'a> {
12    pub fn run_query<'slf: 'a, K: Into<Arc<str>>, V: Into<FieldValue>>(
13        &'slf self,
14        query: &str,
15        vars: BTreeMap<K, V>,
16    ) -> anyhow::Result<Box<dyn Iterator<Item = QueryResult> + 'a>> {
17        match self {
18            #[cfg(feature = "v53")]
19            VersionedRustdocAdapter::V53(_, adapter) => {
20                execute_query(self.schema(), Arc::new(adapter), query, vars)
21            }
22
23            #[cfg(feature = "v55")]
24            VersionedRustdocAdapter::V55(_, adapter) => {
25                execute_query(self.schema(), Arc::new(adapter), query, vars)
26            }
27
28            #[cfg(feature = "v56")]
29            VersionedRustdocAdapter::V56(_, adapter) => {
30                execute_query(self.schema(), Arc::new(adapter), query, vars)
31            }
32        }
33    }
34
35    pub fn run_query_with_indexed_query<'slf: 'a, K: Into<Arc<str>>, V: Into<FieldValue>>(
36        &'slf self,
37        query: Arc<trustfall_core::ir::IndexedQuery>,
38        vars: BTreeMap<K, V>,
39    ) -> anyhow::Result<Box<dyn Iterator<Item = QueryResult> + 'a>> {
40        let vars = Arc::new(
41            vars.into_iter()
42                .map(|(k, v)| (k.into(), v.into()))
43                .collect(),
44        );
45
46        match self {
47            #[cfg(feature = "v53")]
48            VersionedRustdocAdapter::V53(_, adapter) => {
49                Ok(trustfall_core::interpreter::execution::interpret_ir(
50                    Arc::new(adapter),
51                    query,
52                    vars,
53                )?)
54            }
55
56            #[cfg(feature = "v55")]
57            VersionedRustdocAdapter::V55(_, adapter) => {
58                Ok(trustfall_core::interpreter::execution::interpret_ir(
59                    Arc::new(adapter),
60                    query,
61                    vars,
62                )?)
63            }
64
65            #[cfg(feature = "v56")]
66            VersionedRustdocAdapter::V56(_, adapter) => {
67                Ok(trustfall_core::interpreter::execution::interpret_ir(
68                    Arc::new(adapter),
69                    query,
70                    vars,
71                )?)
72            }
73        }
74    }
75}