catapulte_engine/loader/
mod.rs1pub mod http;
2pub mod local;
3pub mod prelude;
4
5#[derive(Debug, thiserror::Error)]
6pub enum Error {
7 #[error(transparent)]
8 Local(#[from] local::Error),
9 #[error(transparent)]
10 Http(#[from] http::Error),
11}
12
13#[derive(Clone, Debug, serde::Deserialize)]
14#[serde(tag = "type", rename_all = "kebab-case")]
15pub enum Config {
16 Local(local::Config),
17 Http(http::Config),
18}
19
20impl Default for Config {
21 fn default() -> Self {
22 Self::Local(local::Config::default())
23 }
24}
25
26impl From<Config> for Loader {
27 fn from(value: Config) -> Self {
28 match value {
29 Config::Local(item) => Loader::Local(item.into()),
30 Config::Http(item) => Loader::Http(item.build()),
31 }
32 }
33}
34
35#[derive(Debug)]
36pub enum Loader {
37 Local(local::LocalLoader),
38 Http(http::HttpLoader),
39}
40
41impl Loader {
42 pub async fn find_by_name(&self, name: &str) -> Result<prelude::Template, Error> {
43 match self {
44 Loader::Local(inner) => inner.find_by_name(name).await.map_err(Error::Local),
45 Loader::Http(inner) => inner.find_by_name(name).await.map_err(Error::Http),
46 }
47 }
48}