openpine_vm/script_info/
mod.rs1mod alert_condition;
2mod input;
3mod script_type;
4
5use std::collections::BTreeMap;
6
7pub use alert_condition::*;
8pub use input::*;
9pub use script_type::*;
10use serde::{Deserialize, Serialize};
11
12use crate::Error;
13
14#[derive(Debug, Default)]
15pub(crate) struct PartialScriptInfo {
16 pub(crate) script_type: Option<ScriptType>,
17 pub(crate) inputs: BTreeMap<i64, Input>,
18 pub(crate) alert_conditions: BTreeMap<i64, AlertCondition>,
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct ScriptInfo {
24 pub script_type: ScriptType,
26 pub inputs: Vec<Input>,
28 pub alert_conditions: Vec<AlertCondition>,
30}
31
32impl TryFrom<PartialScriptInfo> for ScriptInfo {
33 type Error = Error;
34
35 fn try_from(value: PartialScriptInfo) -> Result<Self, Self::Error> {
36 let script_type = value.script_type.ok_or(Error::MissingScriptType)?;
37 Ok(ScriptInfo {
38 script_type,
39 inputs: value.inputs.into_values().collect(),
40 alert_conditions: value.alert_conditions.into_values().collect(),
41 })
42 }
43}