whisky_common/models/
asset.rs1use 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}