whisky_common/models/
asset.rs

1use schemars::JsonSchema;
2
3#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize, JsonSchema)]
4#[serde(rename_all = "camelCase")]
5pub struct Asset {
6    unit: String,
7    quantity: String,
8}
9
10impl Asset {
11    pub fn unit_to_tuple(unit: &str) -> (String, String) {
12        let unit = if unit == "lovelace" {
13            "".to_string()
14        } else {
15            unit.to_string()
16        };
17        let policy = unit.chars().take(56).collect();
18        let name = unit.chars().skip(56).collect();
19        (policy, name)
20    }
21    pub fn new(unit: String, quantity: String) -> Self {
22        Asset { unit, quantity }
23    }
24    pub fn new_from_str(unit: &str, quantity: &str) -> Self {
25        Asset {
26            unit: unit.to_string(),
27            quantity: quantity.to_string(),
28        }
29    }
30    pub fn unit(&self) -> String {
31        self.unit.clone()
32    }
33    pub fn policy(&self) -> String {
34        self.unit.chars().take(56).collect()
35    }
36    pub fn name(&self) -> String {
37        self.unit.chars().skip(56).collect()
38    }
39    pub fn quantity(&self) -> String {
40        self.quantity.clone()
41    }
42    pub fn quantity_i128(&self) -> i128 {
43        self.quantity.parse().unwrap()
44    }
45}