beetry_node/plugin/
params.rs1use std::sync::Arc;
2
3use anyhow::{Error, anyhow};
4use beetry_editor_types::spec::node::{
5 FieldDefinition, FieldMetadata, FieldName, FieldTypeSpec, ParamsSpec,
6};
7use beetry_plugin::ProvideParamSpec;
8use mitsein::iter1::IntoIterator1;
9
10use crate::ParallelParams;
11
12impl ProvideParamSpec for ParallelParams {
13 fn provide() -> ParamsSpec {
14 [
15 (
16 FieldName::from("success_count"),
17 FieldDefinition {
18 type_spec: FieldTypeSpec::U16(FieldMetadata::new(Arc::new(
19 Self::validate_success_count,
20 ))),
21 description: Some("Number of successful children required to succeed".into()),
22 },
23 ),
24 (
25 FieldName::from("failure_count"),
26 FieldDefinition {
27 type_spec: FieldTypeSpec::U16(FieldMetadata::new(Arc::new(
28 Self::validate_failure_count,
29 ))),
30 description: Some("Number of failed children required to fail".into()),
31 },
32 ),
33 ]
34 .into_iter1()
35 .collect1()
36 }
37}
38
39impl ParallelParams {
40 #[allow(clippy::trivially_copy_pass_by_ref)]
41 fn validate_success_count(value: &u16) -> Result<(), Error> {
42 if *value == 0 {
43 return Err(anyhow!("success count must be greater than 0"));
44 }
45 Ok(())
46 }
47
48 #[allow(clippy::trivially_copy_pass_by_ref)]
49 fn validate_failure_count(value: &u16) -> Result<(), Error> {
50 if *value == 0 {
51 return Err(anyhow!("failure count must be greater than 0"));
52 }
53 Ok(())
54 }
55}