From 76d60080f7bbd4eff48cb8e34aa737a54a4ce8d0 Mon Sep 17 00:00:00 2001 From: lucalise Date: Wed, 18 Feb 2026 17:07:27 -0800 Subject: [PATCH] fix: simplify repeated patterns --- registry/src/storage/valkey.rs | 44 ++++++++++++++-------------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/registry/src/storage/valkey.rs b/registry/src/storage/valkey.rs index 679bcf7..09ffda8 100644 --- a/registry/src/storage/valkey.rs +++ b/registry/src/storage/valkey.rs @@ -4,6 +4,7 @@ use std::net::{IpAddr, Ipv4Addr}; use futures::TryFutureExt; use ipnetwork::IpNetwork; use redis::AsyncTypedCommands; +use redis::aio::MultiplexedConnection; use registry::Peer; use serde::Deserialize; @@ -29,12 +30,7 @@ pub struct RegisterRequest { impl StorageImpl for ValkeyStorage { async fn register_device(&self, request: &RegisterRequest) -> Result { - let mut conn = self - .valkey_client - .get_multiplexed_async_connection() - .await - .map_err(|e| Error::valkey_get_connection(e))?; - + let mut conn = self.get_connection().await?; let peer_key = format!("peer:{}", request.public_key.as_str()); let existing_mesh_ip: Option = conn @@ -85,11 +81,7 @@ impl StorageImpl for ValkeyStorage { } async fn deregister_device(&self, public_key: &str) -> Result<()> { - let mut conn = self - .valkey_client - .get_multiplexed_async_connection() - .await - .map_err(|e| Error::valkey_get_connection(e))?; + let mut conn = self.get_connection().await?; let hash_key = format!("peer:{public_key}"); conn.srem("peers", public_key) .map_err(|e| Error::deregister_device(e, public_key)) @@ -104,21 +96,13 @@ impl StorageImpl for ValkeyStorage { } async fn get_peers(&self) -> Result> { - let mut conn = self - .valkey_client - .get_multiplexed_async_connection() - .await - .map_err(|e| Error::valkey_get_connection(e))?; - let keys: HashSet = conn - .smembers("peers") - .await - .map_err(|e| Error::get_peer(e))?; + let mut conn = self.get_connection().await?; + let keys: Vec = self.get_public_keys().await?.into_iter().collect(); if keys.is_empty() { return Ok(vec![]); } - let keys: Vec = keys.into_iter().collect(); let mut pipe = redis::pipe(); for key in keys.iter() { pipe.hgetall(format!("peer:{key}")); @@ -152,15 +136,23 @@ impl StorageImpl for ValkeyStorage { } impl ValkeyStorage { + async fn get_connection(&self) -> Result { + self.valkey_client + .get_multiplexed_async_connection() + .await + .map_err(|e| Error::valkey_get_connection(e)) + } + + async fn get_public_keys(&self) -> Result> { + let mut conn = self.get_connection().await?; + conn.smembers("peers").await.map_err(|e| Error::get_peer(e)) + } + async fn allocate_mesh_ip( &self, conn: &mut redis::aio::MultiplexedConnection, ) -> Result { - let keys: HashSet = conn - .smembers("peers") - .await - .map_err(|e| Error::get_peer(e))?; - + let keys = self.get_public_keys().await?; let mut assigned_ips: HashSet = HashSet::new(); if !keys.is_empty() {