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
pub mod config_engines;
pub mod types;

use types::{Stack, StackType};

use lazy_static::lazy_static;

lazy_static! {
    pub static ref MQ: Stack = serde_yaml::from_str(include_str!("templates/message_queue.yaml"))
        .expect("message_queue.yaml not found");
    pub static ref STANDARD: Stack =
        serde_yaml::from_str(include_str!("templates/standard.yaml")).expect("standard.yaml not found");
    pub static ref ML: Stack = serde_yaml::from_str(include_str!("templates/machine_learning.yaml"))
        .expect("machine_learning.yaml not found");
    pub static ref OLAP: Stack =
        serde_yaml::from_str(include_str!("templates/olap.yaml")).expect("olap.yaml not found");
    pub static ref OLTP: Stack =
        serde_yaml::from_str(include_str!("templates/oltp.yaml")).expect("oltp.yaml not found");
    pub static ref VECTOR_DB: Stack =
        serde_yaml::from_str(include_str!("templates/vectordb.yaml")).expect("vectordb.yaml not found");
}

pub fn get_stack(entity: StackType) -> types::Stack {
    match entity {
        StackType::MessageQueue => MQ.clone(),
        StackType::Standard => STANDARD.clone(),
        StackType::MachineLearning => ML.clone(),
        StackType::OLAP => OLAP.clone(),
        StackType::OLTP => OLTP.clone(),
        StackType::VectorDB => VECTOR_DB.clone(),
    }
}