From 9c7726537d738bd3b4e6f08609434cd07f659599 Mon Sep 17 00:00:00 2001 From: Matt Gabrenya Date: Tue, 6 Feb 2024 15:24:14 -0700 Subject: [PATCH 1/4] feat(cli): format timestamps as local tz --- crates/cli/src/commands/order/list.rs | 8 ++++---- .../cli/src/commands/vault/list_balance_changes.rs | 14 ++++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/crates/cli/src/commands/order/list.rs b/crates/cli/src/commands/order/list.rs index 5b26375c0..bec7296f3 100644 --- a/crates/cli/src/commands/order/list.rs +++ b/crates/cli/src/commands/order/list.rs @@ -5,7 +5,7 @@ use crate::{ subgraph::{CliPaginationArgs, CliSubgraphArgs}, }; use anyhow::{anyhow, Result}; -use chrono::{NaiveDateTime, TimeZone, Utc}; +use chrono::{Local, NaiveDateTime, TimeZone, Utc}; use clap::Args; use comfy_table::Table; use rain_orderbook_common::subgraph::SubgraphArgs; @@ -58,7 +58,7 @@ fn build_table(orders: Vec) -> Result { .set_content_arrangement(comfy_table::ContentArrangement::Dynamic) .set_header(vec![ "Order ID", - "Added At (UTC)", + "Added At", "Active", "Owner", "Input Tokens", @@ -69,11 +69,11 @@ fn build_table(orders: Vec) -> Result
{ let timestamp_i64 = order.timestamp.0.parse::()?; let timestamp_naive = NaiveDateTime::from_timestamp_opt(timestamp_i64, 0) .ok_or(anyhow!("Failed to parse timestamp into NaiveDateTime"))?; - let timestamp_utc = Utc.from_utc_datetime(×tamp_naive); + let timestamp_local = Utc.from_utc_datetime(×tamp_naive).with_timezone(&Local); table.add_row(vec![ order.id.inner().into(), - format!("{}", timestamp_utc.format("%Y-%m-%d %H:%M:%S")), + format!("{}", timestamp_local.format("%Y-%m-%d %I:%M:%S %p")), format!("{}", order.order_active), format!("{}", order.owner.id.0), order diff --git a/crates/cli/src/commands/vault/list_balance_changes.rs b/crates/cli/src/commands/vault/list_balance_changes.rs index 9a4a6f219..ce2c4c14c 100644 --- a/crates/cli/src/commands/vault/list_balance_changes.rs +++ b/crates/cli/src/commands/vault/list_balance_changes.rs @@ -5,7 +5,7 @@ use crate::{ subgraph::{CliPaginationArgs, CliSubgraphArgs}, }; use anyhow::{anyhow, Result}; -use chrono::{NaiveDateTime, TimeZone, Utc}; +use chrono::{DateTime, Local, NaiveDateTime, TimeZone, Utc}; use clap::Args; use comfy_table::Table; use rain_orderbook_common::subgraph::SubgraphArgs; @@ -64,7 +64,7 @@ fn build_table(balance_change: Vec) -> Result
{ .set_content_arrangement(comfy_table::ContentArrangement::Dynamic) .set_header(vec![ "ID", - "Changed At (UTC)", + "Changed At", "Sender", "Balance Change", "Change Type", @@ -76,11 +76,13 @@ fn build_table(balance_change: Vec) -> Result
{ let timestamp_i64 = w.timestamp.0.parse::()?; let timestamp_naive = NaiveDateTime::from_timestamp_opt(timestamp_i64, 0) .ok_or(anyhow!("Failed to parse timestamp into NaiveDateTime"))?; - let timestamp_utc = Utc.from_utc_datetime(×tamp_naive); + let timestamp_local = Utc + .from_utc_datetime(×tamp_naive) + .with_timezone(&Local); table.add_row(vec![ format!("{}", w.id.clone().into_inner()), - format!("{}", timestamp_utc.format("%Y-%m-%d %H:%M:%S")), + format!("{}", timestamp_local.format("%Y-%m-%d %I:%M:%S %p")), format!("{}", w.sender.id.clone().0), format!("-{}", w.amount_display.0), "Withdraw".to_string(), @@ -90,11 +92,11 @@ fn build_table(balance_change: Vec) -> Result
{ let timestamp_i64 = d.timestamp.0.parse::()?; let timestamp_naive = NaiveDateTime::from_timestamp_opt(timestamp_i64, 0) .ok_or(anyhow!("Failed to parse timestamp into NaiveDateTime"))?; - let timestamp_utc = Utc.from_utc_datetime(×tamp_naive); + let timestamp_local = Utc.from_utc_datetime(×tamp_naive).with_timezone(&Local); table.add_row(vec![ format!("{}", d.id.clone().into_inner()), - format!("{}", timestamp_utc.format("%Y-%m-%d %H:%M:%S")), + format!("{}", timestamp_local.format("%Y-%m-%d %I:%M:%S %p")), format!("{}", d.sender.id.clone().0), format!("{}", d.amount_display.0), "Deposit".to_string(), From ab52354531bc37bd6062e4631ea8f8549e698c5c Mon Sep 17 00:00:00 2001 From: Matt Gabrenya Date: Tue, 6 Feb 2024 16:17:34 -0700 Subject: [PATCH 2/4] refactor(cli): generate table and csv from the same formatted types --- crates/cli/src/commands/order/list.rs | 51 ++++------- .../commands/vault/list_balance_changes.rs | 60 ++++--------- crates/subgraph/src/types/flattened.rs | 90 ++++++++++++++----- crates/subgraph/src/utils/mod.rs | 5 ++ .../src/{utils.rs => utils/slice_list.rs} | 0 crates/subgraph/src/utils/timestamp.rs | 32 +++++++ 6 files changed, 135 insertions(+), 103 deletions(-) create mode 100644 crates/subgraph/src/utils/mod.rs rename crates/subgraph/src/{utils.rs => utils/slice_list.rs} (100%) create mode 100644 crates/subgraph/src/utils/timestamp.rs diff --git a/crates/cli/src/commands/order/list.rs b/crates/cli/src/commands/order/list.rs index bec7296f3..7ca927032 100644 --- a/crates/cli/src/commands/order/list.rs +++ b/crates/cli/src/commands/order/list.rs @@ -4,13 +4,12 @@ use crate::{ execute::Execute, subgraph::{CliPaginationArgs, CliSubgraphArgs}, }; -use anyhow::{anyhow, Result}; -use chrono::{Local, NaiveDateTime, TimeZone, Utc}; +use anyhow::Result; use clap::Args; use comfy_table::Table; use rain_orderbook_common::subgraph::SubgraphArgs; use rain_orderbook_subgraph_client::{ - types::{flattened::OrderFlattened, orders_list::Order}, + types::flattened::{OrderFlattened, TryIntoFlattenedError}, PaginationArgs, WriteCsv, }; use tracing::info; @@ -36,14 +35,17 @@ impl Execute for CliOrderListArgs { .await? .orders_list(pagination_args) .await?; + let orders_flattened: Vec = + orders + .into_iter() + .map(|o| o.try_into()) + .collect::, TryIntoFlattenedError>>()?; if let Some(csv_file) = self.csv_file.clone() { - let orders_flattened: Vec = - orders.into_iter().map(|o| o.into()).collect(); orders_flattened.write_csv(csv_file.clone())?; info!("Saved to CSV at {:?}", canonicalize(csv_file.as_path())?); } else { - let table = build_table(orders)?; + let table = build_table(orders_flattened)?; info!("\n{}", table); } @@ -51,7 +53,7 @@ impl Execute for CliOrderListArgs { } } -fn build_table(orders: Vec) -> Result
{ +fn build_table(orders: Vec) -> Result
{ let mut table = comfy_table::Table::new(); table .load_preset(comfy_table::presets::UTF8_FULL) @@ -65,37 +67,14 @@ fn build_table(orders: Vec) -> Result
{ "Output Tokens", ]); - for order in orders.iter() { - let timestamp_i64 = order.timestamp.0.parse::()?; - let timestamp_naive = NaiveDateTime::from_timestamp_opt(timestamp_i64, 0) - .ok_or(anyhow!("Failed to parse timestamp into NaiveDateTime"))?; - let timestamp_local = Utc.from_utc_datetime(×tamp_naive).with_timezone(&Local); - + for order in orders.into_iter() { table.add_row(vec![ - order.id.inner().into(), - format!("{}", timestamp_local.format("%Y-%m-%d %I:%M:%S %p")), + order.id, + order.timestamp_display, format!("{}", order.order_active), - format!("{}", order.owner.id.0), - order - .valid_inputs - .clone() - .map_or("".into(), |valid_inputs| { - valid_inputs - .into_iter() - .map(|v| v.token.symbol) - .collect::>() - .join(", ") - }), - order - .valid_outputs - .clone() - .map_or("".into(), |valid_outputs| { - valid_outputs - .into_iter() - .map(|v| v.token.symbol) - .collect::>() - .join(", ") - }), + format!("{}", order.owner.0), + order.valid_inputs_token_symbols_display, + order.valid_outputs_token_symbols_display, ]); } diff --git a/crates/cli/src/commands/vault/list_balance_changes.rs b/crates/cli/src/commands/vault/list_balance_changes.rs index ce2c4c14c..80ee19da4 100644 --- a/crates/cli/src/commands/vault/list_balance_changes.rs +++ b/crates/cli/src/commands/vault/list_balance_changes.rs @@ -4,13 +4,12 @@ use crate::{ execute::Execute, subgraph::{CliPaginationArgs, CliSubgraphArgs}, }; -use anyhow::{anyhow, Result}; -use chrono::{DateTime, Local, NaiveDateTime, TimeZone, Utc}; +use anyhow::Result; use clap::Args; use comfy_table::Table; use rain_orderbook_common::subgraph::SubgraphArgs; use rain_orderbook_subgraph_client::{ - types::{flattened::VaultBalanceChangeFlattened, vault_balance_change::VaultBalanceChange}, + types::flattened::{TryIntoFlattenedError, VaultBalanceChangeFlattened}, PaginationArgs, WriteCsv, }; use tracing::info; @@ -39,17 +38,17 @@ impl Execute for CliVaultListBalanceChanges { .await? .vault_list_balance_changes(self.vault_id.clone().into(), pagination_args) .await?; + let vault_balance_changes_flattened: Vec = + vault_balance_changes + .into_iter() + .map(|o| o.try_into()) + .collect::, TryIntoFlattenedError>>()?; if let Some(csv_file) = self.csv_file.clone() { - let vault_balance_changes_flattened: Vec = - vault_balance_changes - .into_iter() - .map(|o| o.into()) - .collect(); vault_balance_changes_flattened.write_csv(csv_file.clone())?; info!("Saved to CSV at {:?}", canonicalize(csv_file.as_path())?); } else { - let table = build_table(vault_balance_changes)?; + let table = build_table(vault_balance_changes_flattened)?; info!("\n{}", table); } @@ -57,7 +56,7 @@ impl Execute for CliVaultListBalanceChanges { } } -fn build_table(balance_change: Vec) -> Result
{ +fn build_table(balance_change: Vec) -> Result
{ let mut table = comfy_table::Table::new(); table .load_preset(comfy_table::presets::UTF8_FULL) @@ -70,39 +69,14 @@ fn build_table(balance_change: Vec) -> Result
{ "Change Type", ]); - for balance_change in balance_change.iter() { - match balance_change { - VaultBalanceChange::Withdraw(w) => { - let timestamp_i64 = w.timestamp.0.parse::()?; - let timestamp_naive = NaiveDateTime::from_timestamp_opt(timestamp_i64, 0) - .ok_or(anyhow!("Failed to parse timestamp into NaiveDateTime"))?; - let timestamp_local = Utc - .from_utc_datetime(×tamp_naive) - .with_timezone(&Local); - - table.add_row(vec![ - format!("{}", w.id.clone().into_inner()), - format!("{}", timestamp_local.format("%Y-%m-%d %I:%M:%S %p")), - format!("{}", w.sender.id.clone().0), - format!("-{}", w.amount_display.0), - "Withdraw".to_string(), - ]); - } - VaultBalanceChange::Deposit(d) => { - let timestamp_i64 = d.timestamp.0.parse::()?; - let timestamp_naive = NaiveDateTime::from_timestamp_opt(timestamp_i64, 0) - .ok_or(anyhow!("Failed to parse timestamp into NaiveDateTime"))?; - let timestamp_local = Utc.from_utc_datetime(×tamp_naive).with_timezone(&Local); - - table.add_row(vec![ - format!("{}", d.id.clone().into_inner()), - format!("{}", timestamp_local.format("%Y-%m-%d %I:%M:%S %p")), - format!("{}", d.sender.id.clone().0), - format!("{}", d.amount_display.0), - "Deposit".to_string(), - ]); - } - }; + for balance_change in balance_change.into_iter() { + table.add_row(vec![ + balance_change.id, + balance_change.timestamp_display, + balance_change.sender.0, + balance_change.amount_display_signed, + balance_change.change_type_display, + ]); } Ok(table) diff --git a/crates/subgraph/src/types/flattened.rs b/crates/subgraph/src/types/flattened.rs index 105f78694..678942b26 100644 --- a/crates/subgraph/src/types/flattened.rs +++ b/crates/subgraph/src/types/flattened.rs @@ -1,8 +1,20 @@ +use std::num::ParseIntError; + use super::{ orders_list, vault_balance_change::VaultBalanceChange, vault_list_balance_changes, vaults_list, }; -use crate::csv::WriteCsv; +use crate::utils::format_bigint_timestamp_display; +use crate::{csv::WriteCsv, utils::FormatTimestampDisplayError}; use serde::{Deserialize, Serialize}; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum TryIntoFlattenedError { + #[error(transparent)] + FormatTimestampDisplayError(#[from] FormatTimestampDisplayError), + #[error(transparent)] + ParseIntError(#[from] ParseIntError), +} #[derive(Serialize, Deserialize, Clone)] pub struct TokenVaultFlattened { @@ -39,6 +51,7 @@ impl WriteCsv for Vec {} pub struct OrderFlattened { pub id: String, pub timestamp: orders_list::BigInt, + pub timestamp_display: String, pub handle_io: bool, pub owner: orders_list::Bytes, pub order_active: bool, @@ -47,34 +60,55 @@ pub struct OrderFlattened { pub transaction: String, pub valid_inputs_vaults: String, pub valid_outputs_vaults: String, + pub valid_inputs_token_symbols_display: String, + pub valid_outputs_token_symbols_display: String, } -impl From for OrderFlattened { - fn from(val: orders_list::Order) -> Self { - Self { +impl TryFrom for OrderFlattened { + type Error = TryIntoFlattenedError; + + fn try_from(val: orders_list::Order) -> Result { + Ok(Self { id: val.id.into_inner(), - timestamp: val.timestamp, + timestamp: val.timestamp.clone(), + timestamp_display: format_bigint_timestamp_display(val.timestamp.0)?, handle_io: val.handle_io, owner: val.owner.id, order_active: val.order_active, interpreter: val.interpreter, interpreter_store: val.interpreter_store, transaction: val.transaction.id.into_inner(), - valid_inputs_vaults: val - .valid_inputs - .map_or("".into(), |v: Vec| { + valid_inputs_vaults: val.valid_inputs.clone().map_or( + "".into(), + |v: Vec| { v.into_iter() .map(|io| io.token_vault.id.into_inner()) .collect::>() .join(", ") - }), - valid_outputs_vaults: val.valid_outputs.map_or("".into(), |v| { + }, + ), + valid_outputs_vaults: val.valid_outputs.clone().map_or("".into(), |v| { v.into_iter() .map(|io| io.token_vault.id.into_inner()) .collect::>() .join(", ") }), - } + valid_inputs_token_symbols_display: val.valid_inputs.map_or( + "".into(), + |v: Vec| { + v.into_iter() + .map(|io| io.token.symbol) + .collect::>() + .join(", ") + }, + ), + valid_outputs_token_symbols_display: val.valid_outputs.map_or("".into(), |v| { + v.into_iter() + .map(|io| io.token.symbol) + .collect::>() + .join(", ") + }), + }) } } @@ -84,31 +118,39 @@ impl WriteCsv for Vec {} pub struct VaultBalanceChangeFlattened { pub id: String, pub timestamp: vault_list_balance_changes::BigInt, + pub timestamp_display: String, pub sender: vault_list_balance_changes::Bytes, pub amount: vault_list_balance_changes::BigDecimal, - pub change_type: String, + pub amount_display_signed: String, + pub change_type_display: String, pub balance: vault_list_balance_changes::BigDecimal, } -impl From for VaultBalanceChangeFlattened { - fn from(val: VaultBalanceChange) -> Self { +impl TryFrom for VaultBalanceChangeFlattened { + type Error = TryIntoFlattenedError; + + fn try_from(val: VaultBalanceChange) -> Result { match val { - VaultBalanceChange::Deposit(v) => Self { + VaultBalanceChange::Deposit(v) => Ok(Self { id: v.id.into_inner(), - timestamp: v.timestamp, + timestamp: v.timestamp.clone(), + timestamp_display: format_bigint_timestamp_display(v.timestamp.0)?, sender: v.sender.id, - amount: v.amount_display, - change_type: String::from("Deposit"), + amount: v.amount_display.clone(), + amount_display_signed: v.amount_display.0, + change_type_display: String::from("Deposit"), balance: v.token_vault.balance_display, - }, - VaultBalanceChange::Withdraw(v) => Self { + }), + VaultBalanceChange::Withdraw(v) => Ok(Self { id: v.id.into_inner(), - timestamp: v.timestamp, + timestamp: v.timestamp.clone(), + timestamp_display: format_bigint_timestamp_display(v.timestamp.0)?, sender: v.sender.id, - amount: v.amount_display, - change_type: String::from("Withdraw"), + amount: v.amount_display.clone(), + amount_display_signed: format!("-{}", v.amount_display.0), + change_type_display: String::from("Withdraw"), balance: v.token_vault.balance_display, - }, + }), } } } diff --git a/crates/subgraph/src/utils/mod.rs b/crates/subgraph/src/utils/mod.rs new file mode 100644 index 000000000..1609fb651 --- /dev/null +++ b/crates/subgraph/src/utils/mod.rs @@ -0,0 +1,5 @@ +mod slice_list; +mod timestamp; + +pub use slice_list::*; +pub use timestamp::*; diff --git a/crates/subgraph/src/utils.rs b/crates/subgraph/src/utils/slice_list.rs similarity index 100% rename from crates/subgraph/src/utils.rs rename to crates/subgraph/src/utils/slice_list.rs diff --git a/crates/subgraph/src/utils/timestamp.rs b/crates/subgraph/src/utils/timestamp.rs new file mode 100644 index 000000000..04127596d --- /dev/null +++ b/crates/subgraph/src/utils/timestamp.rs @@ -0,0 +1,32 @@ +use chrono::{Local, NaiveDateTime, TimeZone, Utc}; +use std::num::ParseIntError; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum FormatTimestampDisplayError { + #[error("Timestamp is invalid {0}")] + InvalidTimestamp(i64), + + #[error(transparent)] + ParseIntError(#[from] ParseIntError), +} + +pub fn format_bigint_timestamp_display( + timestamp: String, +) -> Result { + let timestamp_i64 = timestamp.parse::()?; + format_timestamp_display(timestamp_i64) +} + +pub fn format_timestamp_display(timestamp: i64) -> Result { + let timestamp_naive = NaiveDateTime::from_timestamp_opt(timestamp, 0) + .ok_or(FormatTimestampDisplayError::InvalidTimestamp(timestamp))?; + + let timestamp_display = Utc + .from_utc_datetime(×tamp_naive) + .with_timezone(&Local) + .format("%Y-%m-%d %I:%M:%S %p") + .to_string(); + + Ok(timestamp_display) +} From a71061b27c65d54ed00538156dbf1ab292650aa9 Mon Sep 17 00:00:00 2001 From: Matt Gabrenya Date: Tue, 6 Feb 2024 16:55:19 -0700 Subject: [PATCH 3/4] fix: tauri build --- tauri-app/src-tauri/src/commands/order.rs | 4 ++-- tauri-app/src-tauri/src/commands/vault.rs | 4 ++-- tauri-app/src-tauri/src/error.rs | 5 ++++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/tauri-app/src-tauri/src/commands/order.rs b/tauri-app/src-tauri/src/commands/order.rs index 7e2338f28..36c417f60 100644 --- a/tauri-app/src-tauri/src/commands/order.rs +++ b/tauri-app/src-tauri/src/commands/order.rs @@ -7,7 +7,7 @@ use rain_orderbook_common::{ add_order::AddOrderArgs, }; use rain_orderbook_subgraph_client::{ - types::{flattened::OrderFlattened, order_detail, orders_list}, + types::{flattened::{OrderFlattened, TryIntoFlattenedError}, order_detail, orders_list}, WriteCsv, PaginationArgs }; @@ -38,7 +38,7 @@ pub async fn orders_list_write_csv( .await? .orders_list(pagination_args) .await?; - let orders_flattened: Vec = orders.into_iter().map(|o| o.into()).collect(); + let orders_flattened: Vec = orders.into_iter().map(|o| o.try_into()).collect::, TryIntoFlattenedError>>()?; orders_flattened.write_csv(path)?; Ok(()) diff --git a/tauri-app/src-tauri/src/commands/vault.rs b/tauri-app/src-tauri/src/commands/vault.rs index 7fc4455d8..a5561ca5c 100644 --- a/tauri-app/src-tauri/src/commands/vault.rs +++ b/tauri-app/src-tauri/src/commands/vault.rs @@ -7,7 +7,7 @@ use rain_orderbook_common::{ withdraw::WithdrawArgs, }; use rain_orderbook_subgraph_client::{ - types::{flattened::{TokenVaultFlattened, VaultBalanceChangeFlattened}, vault_balance_change::VaultBalanceChange, vault_detail, vaults_list}, + types::{flattened::{TokenVaultFlattened, VaultBalanceChangeFlattened, TryIntoFlattenedError}, vault_balance_change::VaultBalanceChange, vault_detail, vaults_list}, WriteCsv, PaginationArgs, }; @@ -70,7 +70,7 @@ pub async fn vault_list_balance_changes_write_csv( .await? .vault_list_balance_changes(id.into(), pagination_args) .await?; - let data_flattened: Vec = data.into_iter().map(|o| o.into()).collect(); + let data_flattened: Vec = data.into_iter().map(|o| o.try_into()).collect::, TryIntoFlattenedError>>()?; data_flattened.write_csv(path)?; Ok(()) diff --git a/tauri-app/src-tauri/src/error.rs b/tauri-app/src-tauri/src/error.rs index 8b1d02a67..bc6be73de 100644 --- a/tauri-app/src-tauri/src/error.rs +++ b/tauri-app/src-tauri/src/error.rs @@ -2,7 +2,7 @@ use alloy_ethers_typecast::{client::LedgerClientError, transaction::ReadableClie use alloy_primitives::ruint::FromUintError; use rain_orderbook_common::add_order::AddOrderArgsError; use rain_orderbook_common::error::ForkParseError; -use rain_orderbook_subgraph_client::{OrderbookSubgraphClientError, WriteCsvError}; +use rain_orderbook_subgraph_client::{types::flattened::TryIntoFlattenedError, OrderbookSubgraphClientError, WriteCsvError}; use serde::{ser::Serializer, Serialize}; use thiserror::Error; use url::ParseError; @@ -32,6 +32,9 @@ pub enum CommandError { #[error(transparent)] AddOrderArgsError(#[from] AddOrderArgsError), + + #[error(transparent)] + TryIntoFlattenedError(#[from] TryIntoFlattenedError), } impl Serialize for CommandError { From 6bf7db975b6ee38668c75cd4ee2051e146ad15c3 Mon Sep 17 00:00:00 2001 From: Matt Gabrenya Date: Tue, 6 Feb 2024 17:03:33 -0700 Subject: [PATCH 4/4] chore: change frontmatter keys from camelCase to kebab-case --- crates/common/src/add_order.rs | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/crates/common/src/add_order.rs b/crates/common/src/add_order.rs index 9c4844714..812361aad 100644 --- a/crates/common/src/add_order.rs +++ b/crates/common/src/add_order.rs @@ -55,14 +55,14 @@ pub struct AddOrderArgs { /// orderbook: /// order: /// deployer: 0x1111111111111111111111111111111111111111 - /// validInputs: + /// valid-inputs: /// - address: 0x2222222222222222222222222222222222222222 /// decimals: 18 - /// vaultId: 0x1234 - /// validOutputs: + /// vault-id: 0x1234 + /// valid-outputs: /// - address: 0x5555555555555555555555555555555555555555 /// decimals: 8 - /// vaultId: 0x5678 + /// vault-id: 0x5678 /// ``` /// /// Text MUST have valid dotrain body succeding frontmatter. @@ -71,7 +71,7 @@ pub struct AddOrderArgs { } impl AddOrderArgs { - /// Parse an Io array from from frontmatter field (i.e. validInputs or validOutputs) + /// Parse an Io array from from frontmatter field (i.e. valid-inputs or valid-outputs) pub(crate) fn try_parse_frontmatter_io( io_yamls: StrictYaml, io_field_name: &str, @@ -111,16 +111,16 @@ impl AddOrderArgs { io_field_name )) })?, - vaultId: io_yaml["vaultId"] + vaultId: io_yaml["vault-id"] .as_str() .ok_or(AddOrderArgsError::FrontmatterFieldMissing(format!( - "orderbook.order.{}.vault", + "orderbook.order.{}.vault-id", io_field_name )))? .parse::() .map_err(|_| { AddOrderArgsError::FrontmatterFieldInvalid(format!( - "orderbook.order.{}.vault", + "orderbook.order.{}.vault-id", io_field_name )) })?, @@ -129,7 +129,7 @@ impl AddOrderArgs { .collect::, AddOrderArgsError>>() } - /// Parse dotrain frontmatter to extract deployer, validInputs and validOutputs + /// Parse dotrain frontmatter to extract deployer, valid-inputs and valid-outputs pub(crate) fn try_parse_frontmatter( frontmatter: &str, ) -> Result<(Address, Vec, Vec), AddOrderArgsError> { @@ -148,12 +148,12 @@ impl AddOrderArgs { })?; let valid_inputs: Vec = Self::try_parse_frontmatter_io( - frontmatter_yaml[0]["orderbook"]["order"]["validInputs"].clone(), - "validInputs", + frontmatter_yaml[0]["orderbook"]["order"]["valid-inputs"].clone(), + "valid-inputs", )?; let valid_outputs: Vec = Self::try_parse_frontmatter_io( - frontmatter_yaml[0]["orderbook"]["order"]["validOutputs"].clone(), - "validOutputs", + frontmatter_yaml[0]["orderbook"]["order"]["valid-outputs"].clone(), + "valid-outputs", )?; Ok((deployer, valid_inputs, valid_outputs)) @@ -258,14 +258,14 @@ mod tests { orderbook: order: deployer: 0x1111111111111111111111111111111111111111 - validInputs: + valid-inputs: - token: 0x0000000000000000000000000000000000000001 decimals: 18 - vaultId: 0x1 - validOutputs: + vault-id: 0x1 + valid-outputs: - token: 0x0000000000000000000000000000000000000002 decimals: 18 - vaultId: 0x2 + vault-id: 0x2 "; let (deployer, valid_inputs, valid_outputs) =