From 39be7db1e90ba4361db37c40360b63c66b1d5c75 Mon Sep 17 00:00:00 2001 From: Fintan Halpenny Date: Mon, 6 Mar 2023 10:11:44 +0000 Subject: [PATCH] radicle: make alias optional Previously the alias field was simply a string which could possibly be empty. Some checks were made to see if this string was empty. Instead, make the logic more obvious by making the alias field optional. Signed-off-by: Fintan Halpenny X-Clacks-Overhead: GNU Terry Pratchett --- radicle-cli/src/commands/node/tracking.rs | 7 +++---- radicle-node/src/service/tracking/store.rs | 14 +++++--------- radicle-node/src/test/handle.rs | 2 +- radicle/src/node/tracking.rs | 2 +- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/radicle-cli/src/commands/node/tracking.rs b/radicle-cli/src/commands/node/tracking.rs index 61c722ad..ca414438 100644 --- a/radicle-cli/src/commands/node/tracking.rs +++ b/radicle-cli/src/commands/node/tracking.rs @@ -36,10 +36,9 @@ fn print_nodes(node: &Node) -> anyhow::Result<()> { for tracking::Node { id, alias, policy } in node.tracked_nodes()? { t.push([ term::format::highlight(Did::from(id).to_string()), - if alias.is_empty() { - term::format::secondary("n/a".to_string()) - } else { - term::format::secondary(alias) + match alias { + None => term::format::secondary("n/a".to_string()), + Some(alias) => term::format::secondary(alias), }, term::format::secondary(policy.to_string()), ]); diff --git a/radicle-node/src/service/tracking/store.rs b/radicle-node/src/service/tracking/store.rs index 5ac028d5..18cd5353 100644 --- a/radicle-node/src/service/tracking/store.rs +++ b/radicle-node/src/service/tracking/store.rs @@ -1,6 +1,6 @@ #![allow(clippy::type_complexity)] use std::path::Path; -use std::{fmt, io}; +use std::{fmt, io, ops::Not as _}; use sqlite as sql; use thiserror::Error; @@ -159,15 +159,10 @@ impl Config { if let Some(Ok(row)) = stmt.into_iter().next() { let alias = row.read::<&str, _>("alias"); + let alias = alias.is_empty().not().then_some(alias.to_owned()); + let policy = row.read::("policy"); - return Ok(Some(( - if alias.is_empty() { - None - } else { - Some(alias.to_owned()) - }, - row.read::("policy"), - ))); + return Ok(Some((alias, policy))); } Ok(None) } @@ -200,6 +195,7 @@ impl Config { while let Some(Ok(row)) = stmt.next() { let id = row.read("id"); let alias = row.read::<&str, _>("alias").to_owned(); + let alias = alias.is_empty().not().then_some(alias.to_owned()); let policy = row.read::("policy"); entries.push(Node { id, alias, policy }); diff --git a/radicle-node/src/test/handle.rs b/radicle-node/src/test/handle.rs index ab0d7b29..5c04dde2 100644 --- a/radicle-node/src/test/handle.rs +++ b/radicle-node/src/test/handle.rs @@ -60,7 +60,7 @@ impl radicle::node::Handle for Handle { .copied() .map(|id| tracking::Node { id, - alias: "".to_string(), + alias: None, policy: tracking::Policy::Track, }) .collect()) diff --git a/radicle/src/node/tracking.rs b/radicle/src/node/tracking.rs index 46262217..57380059 100644 --- a/radicle/src/node/tracking.rs +++ b/radicle/src/node/tracking.rs @@ -18,7 +18,7 @@ pub struct Repo { #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct Node { pub id: NodeId, - pub alias: Alias, + pub alias: Option, pub policy: Policy, }