app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit 0fcc8dc304631c4140ae8d5ca81a756635cc6b71
parent b261738f55f9c7bcc90ec84c308a8d28eea3d568
Author: triesap <triesap@radroots.dev>
Date:   Mon, 19 Jan 2026 07:11:58 +0000

app-utils: add result wrapper types

- add result id and object wrappers
- add results list and key wrappers
- export new result helper types
- add unit tests for result structs

Diffstat:
Mcrates/utils/src/lib.rs | 5++++-
Mcrates/utils/src/types.rs | 56+++++++++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 59 insertions(+), 2 deletions(-)

diff --git a/crates/utils/src/lib.rs b/crates/utils/src/lib.rs @@ -26,4 +26,7 @@ pub use path::{ }; pub use text::{str_cap, str_cap_words, text_dec, text_enc, ROOT_SYMBOL}; pub use time::{time_now_ms, time_now_s}; -pub use types::{resolve_err, resolve_ok, ResolveError, ResultPass}; +pub use types::{ + resolve_err, resolve_ok, ResolveError, ResultBool, ResultId, ResultObj, ResultPass, + ResultPublicKey, ResultSecretKey, ResultsList, +}; diff --git a/crates/utils/src/types.rs b/crates/utils/src/types.rs @@ -9,6 +9,33 @@ pub struct ResultPass { pub pass: bool, } +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct ResultId { + pub id: String, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct ResultObj<T> { + pub result: T, +} + +pub type ResultBool = ResultObj<bool>; + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct ResultsList<T> { + pub results: Vec<T>, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct ResultPublicKey { + pub public_key: String, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct ResultSecretKey { + pub secret_key: String, +} + impl ResultPass { pub const fn ok() -> Self { Self { pass: true } @@ -25,7 +52,10 @@ pub fn resolve_err<T>(err: RadrootsAppUtilsError) -> ResolveError<T> { #[cfg(test)] mod tests { - use super::{resolve_err, resolve_ok, ResultPass}; + use super::{ + resolve_err, resolve_ok, ResultBool, ResultId, ResultObj, ResultPass, ResultPublicKey, + ResultSecretKey, ResultsList, + }; use crate::error::RadrootsAppUtilsError; #[test] @@ -46,4 +76,28 @@ mod tests { .expect_err("err"); assert_eq!(err, RadrootsAppUtilsError::Unavailable); } + + #[test] + fn result_types_store_values() { + let id = ResultId { + id: "id".to_string(), + }; + assert_eq!(id.id, "id"); + let obj = ResultObj { result: 5 }; + assert_eq!(obj.result, 5); + let bool_obj: ResultBool = ResultObj { result: true }; + assert!(bool_obj.result); + let list = ResultsList { + results: vec![1, 2], + }; + assert_eq!(list.results, vec![1, 2]); + let public_key = ResultPublicKey { + public_key: "pub".to_string(), + }; + assert_eq!(public_key.public_key, "pub"); + let secret_key = ResultSecretKey { + secret_key: "sec".to_string(), + }; + assert_eq!(secret_key.secret_key, "sec"); + } }