Skip to main content

kinetics_parser/
params.rs

1pub mod cron;
2pub mod endpoint;
3pub mod worker;
4
5pub use cron::Cron;
6pub use endpoint::Endpoint;
7pub use worker::Worker;
8
9use crate::environment::Environment;
10use serde::{Deserialize, Serialize};
11use std::fmt::Display;
12
13/// The workload-specific parameters
14///
15/// Parsed from the kinetics macro attribute.
16#[derive(Debug, Clone, Serialize, Deserialize)]
17pub enum Params {
18    Endpoint(Endpoint),
19    Cron(Cron),
20    Worker(Worker),
21}
22
23impl Display for Params {
24    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
25        let str = match self {
26            Params::Endpoint(_) => "endpoint",
27            Params::Cron(_) => "cron",
28            Params::Worker(_) => "worker",
29        };
30
31        write!(f, "{}", str)
32    }
33}
34
35impl Params {
36    pub fn name(&self) -> Option<&String> {
37        match self {
38            Params::Endpoint(params) => params.name.as_ref(),
39            Params::Cron(params) => params.name.as_ref(),
40            Params::Worker(params) => params.name.as_ref(),
41        }
42    }
43
44    pub fn environment(&self) -> &Environment {
45        match self {
46            Params::Endpoint(params) => &params.environment,
47            Params::Cron(params) => &params.environment,
48            Params::Worker(params) => &params.environment,
49        }
50    }
51}