1use std::sync::LazyLock;
4
5use minijinja::{Environment, Template};
6
7use crate::db::event::signed_docs::{
8 FILTERED_COUNT_SIGNED_DOCS_TEMPLATE, FILTERED_SELECT_FULL_SIGNED_DOCS_TEMPLATE,
9 FILTERED_SELECT_SIGNED_DOCS_TEMPLATE, SELECT_SIGNED_DOCS_TEMPLATE,
10};
11
12pub(crate) struct JinjaTemplateSource {
14 pub(crate) name: &'static str,
16 pub(crate) source: &'static str,
18}
19
20#[allow(clippy::unwrap_used)]
22static JINJA_ENV: LazyLock<Environment> = LazyLock::new(|| {
23 let mut env = minijinja::Environment::new();
24
25 env.add_template(
27 SELECT_SIGNED_DOCS_TEMPLATE.name,
28 SELECT_SIGNED_DOCS_TEMPLATE.source,
29 )
30 .unwrap();
31 env.add_template(
32 FILTERED_SELECT_SIGNED_DOCS_TEMPLATE.name,
33 FILTERED_SELECT_SIGNED_DOCS_TEMPLATE.source,
34 )
35 .unwrap();
36 env.add_template(
37 FILTERED_SELECT_FULL_SIGNED_DOCS_TEMPLATE.name,
38 FILTERED_SELECT_FULL_SIGNED_DOCS_TEMPLATE.source,
39 )
40 .unwrap();
41 env.add_template(
42 FILTERED_COUNT_SIGNED_DOCS_TEMPLATE.name,
43 FILTERED_COUNT_SIGNED_DOCS_TEMPLATE.source,
44 )
45 .unwrap();
46
47 env
48});
49
50pub(crate) fn get_template(temp: &JinjaTemplateSource) -> anyhow::Result<Template<'static, '_>> {
52 let template = JINJA_ENV.get_template(temp.name)?;
53 Ok(template)
54}