gl_cli/
model.rs

1use gl_client::pb::cln::{self, amount_or_any};
2
3#[derive(Debug, Clone)]
4enum AmountOrAnyValue {
5    Any,
6    Amount(u64),
7}
8
9#[derive(Debug, Clone)]
10pub struct AmountOrAny {
11    value: AmountOrAnyValue,
12}
13
14impl From<&str> for AmountOrAny {
15    fn from(value: &str) -> Self {
16        if value == "any" {
17            return Self {
18                value: AmountOrAnyValue::Any,
19            };
20        } else {
21            return match value.parse::<u64>() {
22                Ok(msat) => Self {
23                    value: AmountOrAnyValue::Amount(msat),
24                },
25                Err(e) => panic!("{}", e),
26            };
27        }
28    }
29}
30
31impl Into<cln::AmountOrAny> for AmountOrAny {
32    fn into(self) -> cln::AmountOrAny {
33        match self.value {
34            AmountOrAnyValue::Any => cln::AmountOrAny {
35                value: Some(amount_or_any::Value::Any(true)),
36            },
37            AmountOrAnyValue::Amount(msat) => cln::AmountOrAny {
38                value: Some(amount_or_any::Value::Amount(cln::Amount { msat })),
39            },
40        }
41    }
42}