From 948fe972eb2bddf187b79f2673a091b6331cfd90 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Tue, 1 Apr 2025 14:31:34 +0100 Subject: chore: bump rust-nostr v0.37 ~> v0.40 and fix all of the breaking changes --- test_utils/src/git.rs | 12 ++++++----- test_utils/src/lib.rs | 54 +++++++++++++++++++++++++++++-------------------- test_utils/src/relay.rs | 27 +++++++++++++------------ 3 files changed, 53 insertions(+), 40 deletions(-) (limited to 'test_utils/src') diff --git a/test_utils/src/git.rs b/test_utils/src/git.rs index 474fc59..5942a54 100644 --- a/test_utils/src/git.rs +++ b/test_utils/src/git.rs @@ -9,7 +9,7 @@ use std::{ use anyhow::{Context, Result}; use git2::{Branch, Oid, RepositoryInitOptions, Signature, Time}; -use nostr::nips::nip01::Coordinate; +use nostr::nips::{nip01::Coordinate, nip19::Nip19Coordinate}; use nostr_sdk::{Kind, RelayUrl, ToBech32}; use crate::generate_repo_ref_event; @@ -23,10 +23,12 @@ pub struct GitTestRepo { impl Default for GitTestRepo { fn default() -> Self { let repo_event = generate_repo_ref_event(); - let coordinate = Coordinate { - kind: Kind::GitRepoAnnouncement, - public_key: repo_event.pubkey, - identifier: repo_event.tags.identifier().unwrap().to_string(), + let coordinate = Nip19Coordinate { + coordinate: Coordinate { + kind: Kind::GitRepoAnnouncement, + public_key: repo_event.pubkey, + identifier: repo_event.tags.identifier().unwrap().to_string(), + }, relays: vec![ RelayUrl::parse("ws://localhost:8055").unwrap(), RelayUrl::parse("ws://localhost:8056").unwrap(), diff --git a/test_utils/src/lib.rs b/test_utils/src/lib.rs index 5c8d7a5..66d0df5 100644 --- a/test_utils/src/lib.rs +++ b/test_utils/src/lib.rs @@ -1,4 +1,5 @@ use std::{ + collections::HashSet, ffi::OsStr, path::{Path, PathBuf}, str::FromStr, @@ -8,13 +9,13 @@ use std::{ use anyhow::{Context, Result, bail, ensure}; use dialoguer::theme::{ColorfulTheme, Theme}; -use futures::executor::block_on; +use futures::{executor::block_on, future::join_all}; use git::GitTestRepo; use git2::{Signature, Time}; use nostr::{self, Kind, Tag, nips::nip65::RelayMetadata}; use nostr_database::NostrEventsDatabase; use nostr_lmdb::NostrLMDB; -use nostr_sdk::{Client, NostrSigner, TagStandard, serde_json}; +use nostr_sdk::{Client, Event, NostrSigner, TagStandard, serde_json}; use once_cell::sync::Lazy; use rexpect::session::{Options, PtySession}; use strip_ansi_escapes::strip_str; @@ -139,7 +140,7 @@ pub fn make_event_old_or_change_user( &keys.public_key(), &unsigned.created_at, &unsigned.kind, - &unsigned.tags.clone().to_vec(), + &unsigned.tags.clone(), &unsigned.content, )); @@ -1107,14 +1108,24 @@ pub async fn get_events_from_cache( git_repo_path: &Path, filters: Vec, ) -> Result> { - Ok(get_local_cache_database(git_repo_path) - .await? - .query(filters.clone()) - .await - .context( + let db = get_local_cache_database(git_repo_path).await?; + + let query_results = join_all(filters.into_iter().map(|filter| async { + db.query(filter).await.context( "failed to execute query on opened git repo nostr cache database .git/nostr-cache.lmdb", - )? - .to_vec()) + ) + })) + .await; + + // no Event is being mutated, just new items added to the set + #[allow(clippy::mutable_key_type)] + let mut events: HashSet = HashSet::new(); + + for result in query_results { + events.extend(result?); + } + + Ok(events.into_iter().collect()) } pub fn get_proposal_branch_name( @@ -1436,19 +1447,18 @@ fn get_first_proposal_event_id() -> Result { Handle::current().block_on(client.add_relay("ws://localhost:8055"))?; Handle::current().block_on(client.connect_relay("ws://localhost:8055"))?; let proposals = Handle::current() - .block_on(client.fetch_events( - vec![ - nostr::Filter::default() - .kind(nostr::Kind::GitPatch) - .custom_tag( - nostr::SingleLetterTag::lowercase(nostr::Alphabet::T), - vec!["root"], - ), - ], - Some(Duration::from_millis(500)), - ))? + .block_on( + client.fetch_events( + nostr::Filter::default() + .kind(nostr::Kind::GitPatch) + .custom_tags(nostr::SingleLetterTag::lowercase(nostr::Alphabet::T), vec![ + "root", + ]), + Duration::from_millis(500), + ), + )? .to_vec(); - Handle::current().block_on(client.disconnect())?; + Handle::current().block_on(client.disconnect()); let proposal_1_id = proposals .iter() diff --git a/test_utils/src/relay.rs b/test_utils/src/relay.rs index 634b2d6..e820651 100644 --- a/test_utils/src/relay.rs +++ b/test_utils/src/relay.rs @@ -48,7 +48,7 @@ impl<'a> Relay<'a> { let ok_json = RelayMessage::Ok { event_id: event.id, status: error.is_none(), - message: error.unwrap_or("").to_string(), + message: error.unwrap_or("").to_string().into(), } .as_json(); // bail!(format!("{}", &ok_json)); @@ -63,7 +63,7 @@ impl<'a> Relay<'a> { let responder = self.clients.get(&client_id).unwrap(); Ok(responder.send(simple_websockets::Message::Text( - RelayMessage::EndOfStoredEvents(subscription_id).as_json(), + RelayMessage::EndOfStoredEvents(std::borrow::Cow::Borrowed(&subscription_id)).as_json(), ))) } @@ -79,8 +79,8 @@ impl<'a> Relay<'a> { for event in events { let res = responder.send(simple_websockets::Message::Text( RelayMessage::Event { - subscription_id: subscription_id.clone(), - event: Box::new(event.clone()), + subscription_id: std::borrow::Cow::Borrowed(subscription_id), + event: std::borrow::Cow::Borrowed(event), } .as_json(), )); @@ -156,12 +156,14 @@ impl<'a> Relay<'a> { } } - if let Ok((subscription_id, filters)) = get_nreq(&message) { - self.reqs.push(filters.clone()); + if let Ok((subscription_id, filter)) = get_nreq(&message) { + self.reqs.push(vec![filter.clone()]); if let Some(listner) = self.req_listener { - listner(self, client_id, subscription_id, filters)?; + listner(self, client_id, subscription_id, vec![filter.clone()])?; } else { - self.respond_standard_req(client_id, &subscription_id, &filters)?; + self.respond_standard_req(client_id, &subscription_id, &[ + filter.clone() + ])?; // self.respond_eose(client_id, subscription_id)?; } // respond with events @@ -198,8 +200,7 @@ fn get_nevent(message: &simple_websockets::Message) -> Result { if let simple_websockets::Message::Text(s) = message.clone() { let cm_result = ClientMessage::from_json(s); if let Ok(ClientMessage::Event(event)) = cm_result { - let e = *event; - return Ok(e.clone()); + return Ok(event.into_owned()); } } bail!("not nostr event") @@ -207,15 +208,15 @@ fn get_nevent(message: &simple_websockets::Message) -> Result { fn get_nreq( message: &simple_websockets::Message, -) -> Result<(nostr::SubscriptionId, Vec)> { +) -> Result<(nostr::SubscriptionId, nostr::Filter)> { if let simple_websockets::Message::Text(s) = message.clone() { let cm_result = ClientMessage::from_json(s); if let Ok(ClientMessage::Req { subscription_id, - filters, + filter, }) = cm_result { - return Ok((subscription_id, filters)); + return Ok((subscription_id.into_owned(), filter.into_owned())); } } bail!("not nostr event") -- cgit v1.2.3