1use std::sync::LazyLock;
4
5use minijinja::{Environment, Template};
6
7use crate::db::event::signed_docs::{
8 FILTERED_COUNT_SIGNED_DOCS_TEMPLATE, FILTERED_SELECT_SIGNED_DOCS_TEMPLATE,
9 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_COUNT_SIGNED_DOCS_TEMPLATE.name,
38 FILTERED_COUNT_SIGNED_DOCS_TEMPLATE.source,
39 )
40 .unwrap();
41
42 env
43});
44
45pub(crate) fn get_template(temp: &JinjaTemplateSource) -> anyhow::Result<Template<'static, '_>> {
47 let template = JINJA_ENV.get_template(temp.name)?;
48 Ok(template)
49}