Compare commits

..

No commits in common. "e0b83d30b6fd1b15ed27a1f120122c6aa4c682fe" and "3758249a28d564f1a92ce033ebbc3094fafdf540" have entirely different histories.

4 changed files with 12 additions and 16 deletions

View file

@ -1,5 +1,3 @@
use std::collections::HashSet;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use super::{FamilyId, PeerId}; use super::{FamilyId, PeerId};
@ -8,7 +6,7 @@ use super::{FamilyId, PeerId};
pub struct Family { pub struct Family {
pub id: FamilyId, pub id: FamilyId,
pub name: Option<String>, pub name: Option<String>,
pub members: HashSet<PeerId>, pub members: Vec<PeerId>,
} }
impl Family { impl Family {
@ -16,7 +14,7 @@ impl Family {
Family { Family {
id, id,
name, name,
members: HashSet::from_iter(members.into_iter()), members,
} }
} }
} }

View file

@ -52,7 +52,7 @@ impl From<PeerId> for I2pSocketAddr {
impl From<I2pSocketAddr> for PeerId { impl From<I2pSocketAddr> for PeerId {
fn from(value: I2pSocketAddr) -> Self { fn from(value: I2pSocketAddr) -> Self {
Self::try_from_b32(&value.dest().string(), Some(value.port())).unwrap_or_else(|_| Self::try_from_b32(&value.dest().string(), Some(value.port())).unwrap_or(
Self::try_from_dest(&value.dest().string(), Some(value.port())).expect(&format!( Self::try_from_dest(&value.dest().string(), Some(value.port())).expect(&format!(
"I2pSocketAddr was neither in b32 nor in b64 format: {value:?}" "I2pSocketAddr was neither in b32 nor in b64 format: {value:?}"
)), )),

View file

@ -80,7 +80,7 @@ impl From<DbPeerFamily> for Family {
Family { Family {
id: (*value.id).clone(), id: (*value.id).clone(),
name: value.name, name: value.name,
members: HashSet::from_iter(value.members.into_iter()), members: value.members.iter().map(|p| p.clone()).collect_vec(),
} }
} }
} }
@ -160,7 +160,7 @@ impl StateDB {
.value .value
.clone() .clone()
.map(|family| family.members) .map(|family| family.members)
.map(|map| map.into_iter().collect_vec()).unwrap_or(vec![])), .unwrap_or(vec![])),
_ => Err(Error::msg("Peer appears to be member of multiple families")), _ => Err(Error::msg("Peer appears to be member of multiple families")),
})? })?
.map_err(|e| anyhow!(e)) .map_err(|e| anyhow!(e))
@ -187,8 +187,6 @@ impl StateDB {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use std::collections::HashSet;
use ubisync_lib::types::{Family, FamilyId, PeerId}; use ubisync_lib::types::{Family, FamilyId, PeerId};
use crate::state::database::StateDB; use crate::state::database::StateDB;
@ -202,7 +200,7 @@ mod tests {
db.add_peer_family(Family { db.add_peer_family(Family {
id: family_id.clone(), id: family_id.clone(),
name: Some("My family name".to_string()), name: Some("My family name".to_string()),
members: HashSet::from([peer_id.clone()]), members: vec![peer_id.clone()],
}) })
.unwrap(); .unwrap();
let retrieved_family = db.get_peer_family(family_id.clone()).unwrap(); let retrieved_family = db.get_peer_family(family_id.clone()).unwrap();
@ -226,7 +224,7 @@ mod tests {
db.add_peer_family(Family { db.add_peer_family(Family {
id: family_id.clone(), id: family_id.clone(),
name: Some("My family name".to_string()), name: Some("My family name".to_string()),
members: HashSet::from([peer_id.clone()]), members: vec![peer_id.clone()],
}) })
.unwrap(); .unwrap();
db.remove_peer_from_family(peer_id.clone()).unwrap(); db.remove_peer_from_family(peer_id.clone()).unwrap();
@ -251,7 +249,7 @@ mod tests {
db.add_peer_family(Family { db.add_peer_family(Family {
id: family_id.clone(), id: family_id.clone(),
name: Some("My family name".to_string()), name: Some("My family name".to_string()),
members: HashSet::from([peer_id.clone()]), members: vec![peer_id.clone()],
}) })
.unwrap(); .unwrap();
@ -286,7 +284,7 @@ mod tests {
db.add_peer_family(Family { db.add_peer_family(Family {
id: family_id.clone(), id: family_id.clone(),
name: Some("My family name".to_string()), name: Some("My family name".to_string()),
members: HashSet::from([peer_id.clone()]), members: vec![peer_id.clone()],
}) })
.unwrap(); .unwrap();

View file

@ -1,6 +1,6 @@
use crate::{api::v0::app::App, comm::CommHandle, node_events::UbisyncNodeEvent, Ubisync}; use crate::{api::v0::app::App, comm::CommHandle, node_events::UbisyncNodeEvent, Ubisync};
use std::{ use std::{
collections::{HashMap, HashSet}, collections::HashMap,
sync::{ sync::{
mpsc::{channel, Receiver, Sender}, mpsc::{channel, Receiver, Sender},
Arc, Mutex, RwLock, Arc, Mutex, RwLock,
@ -167,7 +167,7 @@ impl State {
let family = Family { let family = Family {
id: FamilyId::new(), id: FamilyId::new(),
name: None, name: None,
members: HashSet::from([my_id.clone(), peer.clone()]), members: vec![my_id.clone(), peer.clone()],
}; };
self.db.add_peer_family(family.clone())?; self.db.add_peer_family(family.clone())?;
family family