Skip to content

Commit 1b5ef06

Browse files
committed
nostr: update Event struct
Remove public fields and internally use `EventIntermediate`
1 parent c81f57b commit 1b5ef06

File tree

29 files changed

+259
-260
lines changed

29 files changed

+259
-260
lines changed

bindings/nostr-ffi/src/event/mod.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,36 +42,36 @@ impl Deref for Event {
4242
#[uniffi::export]
4343
impl Event {
4444
pub fn id(&self) -> Arc<EventId> {
45-
Arc::new(self.inner.id.into())
45+
Arc::new(self.inner.id().into())
4646
}
4747

48-
pub fn pubkey(&self) -> Arc<PublicKey> {
49-
Arc::new(self.inner.pubkey.into())
48+
/// Get event author (`pubkey` field)
49+
pub fn author(&self) -> Arc<PublicKey> {
50+
Arc::new(self.inner.author().into())
5051
}
5152

5253
pub fn created_at(&self) -> Arc<Timestamp> {
53-
Arc::new(self.inner.created_at.into())
54+
Arc::new(self.inner.created_at().into())
5455
}
5556

5657
pub fn kind(&self) -> u64 {
57-
self.inner.kind.into()
58+
self.inner.kind().into()
5859
}
5960

6061
pub fn tags(&self) -> Vec<Arc<Tag>> {
6162
self.inner
62-
.tags
63-
.clone()
64-
.into_iter()
63+
.iter_tags()
64+
.cloned()
6565
.map(|t| Arc::new(t.into()))
6666
.collect()
6767
}
6868

6969
pub fn content(&self) -> String {
70-
self.inner.content.clone()
70+
self.inner.content().to_string()
7171
}
7272

7373
pub fn signature(&self) -> String {
74-
self.inner.sig.to_string()
74+
self.inner.signature().to_string()
7575
}
7676

7777
/// Verify both `EventId` and `Signature`

bindings/nostr-js/src/event/mod.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,29 +55,29 @@ impl From<JsEvent> for Event {
5555
impl JsEvent {
5656
#[wasm_bindgen(getter)]
5757
pub fn id(&self) -> JsEventId {
58-
self.inner.id.into()
58+
self.inner.id().into()
5959
}
6060

61+
/// Get event author (`pubkey` field)
6162
#[wasm_bindgen(getter)]
62-
pub fn pubkey(&self) -> JsPublicKey {
63-
self.inner.pubkey.into()
63+
pub fn author(&self) -> JsPublicKey {
64+
self.inner.author().into()
6465
}
6566

6667
#[wasm_bindgen(js_name = createdAt, getter)]
6768
pub fn created_at(&self) -> JsTimestamp {
68-
self.inner.created_at.into()
69+
self.inner.created_at().into()
6970
}
7071

7172
#[wasm_bindgen(getter)]
7273
pub fn kind(&self) -> f64 {
73-
self.inner.kind.as_f64()
74+
self.inner.kind().as_f64()
7475
}
7576

7677
#[wasm_bindgen(getter)]
7778
pub fn tags(&self) -> JsTagArray {
7879
self.inner
79-
.tags
80-
.iter()
80+
.iter_tags()
8181
.cloned()
8282
.map(|t| {
8383
let e: JsTag = t.into();
@@ -89,12 +89,12 @@ impl JsEvent {
8989

9090
#[wasm_bindgen(getter)]
9191
pub fn content(&self) -> String {
92-
self.inner.content.clone()
92+
self.inner.content().to_string()
9393
}
9494

9595
#[wasm_bindgen(getter)]
9696
pub fn signature(&self) -> String {
97-
self.inner.sig.to_string()
97+
self.inner.signature().to_string()
9898
}
9999

100100
#[wasm_bindgen]

crates/nostr-database/examples/indexes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ async fn main() {
3232

3333
let event = EventBuilder::new_text_note(
3434
format!("Reply to event #{i}"),
35-
[Tag::event(event.id), Tag::public_key(event.pubkey)],
35+
[Tag::event(event.id()), Tag::public_key(event.author())],
3636
)
3737
.to_event(&keys_b)
3838
.unwrap();

crates/nostr-database/examples/memory.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ async fn main() {
3636

3737
let event = EventBuilder::new_text_note(
3838
format!("Reply to event #{i}"),
39-
[Tag::event(event.id), Tag::public_key(event.pubkey)],
39+
[Tag::event(event.id()), Tag::public_key(event.author())],
4040
)
4141
.to_event(&keys_b)
4242
.unwrap();

crates/nostr-database/src/flatbuffers/mod.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,11 @@ impl FlatBufferEncode for Event {
5959
fn encode<'a>(&self, fbb: &'a mut FlatBufferBuilder) -> &'a [u8] {
6060
fbb.reset();
6161

62-
let id = event_fbs::Fixed32Bytes::new(&self.id.to_bytes());
63-
let pubkey = event_fbs::Fixed32Bytes::new(&self.pubkey.serialize());
64-
let sig = event_fbs::Fixed64Bytes::new(self.sig.as_ref());
62+
let id = event_fbs::Fixed32Bytes::new(&self.id().to_bytes());
63+
let pubkey = event_fbs::Fixed32Bytes::new(&self.author().serialize());
64+
let sig = event_fbs::Fixed64Bytes::new(self.signature().as_ref());
6565
let tags = self
66-
.tags
67-
.iter()
66+
.iter_tags()
6867
.map(|t| {
6968
let tags = t
7069
.as_vec()
@@ -80,10 +79,10 @@ impl FlatBufferEncode for Event {
8079
let args = event_fbs::EventArgs {
8180
id: Some(&id),
8281
pubkey: Some(&pubkey),
83-
created_at: self.created_at.as_u64(),
84-
kind: self.kind.as_u64(),
82+
created_at: self.created_at().as_u64(),
83+
kind: self.kind().as_u64(),
8584
tags: Some(fbb.create_vector(&tags)),
86-
content: Some(fbb.create_string(&self.content)),
85+
content: Some(fbb.create_string(self.content())),
8786
sig: Some(&sig),
8887
};
8988

crates/nostr-database/src/index.rs

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,11 @@ impl TryFrom<RawEvent> for EventIndex {
8181
impl From<&Event> for EventIndex {
8282
fn from(e: &Event) -> Self {
8383
Self {
84-
created_at: e.created_at,
85-
event_id: Arc::new(e.id),
86-
pubkey: PublicKeyPrefix::from(e.pubkey),
87-
kind: e.kind,
88-
tags: Arc::new(TagIndexes::from(e.tags.iter().map(|t| t.as_vec()))),
84+
created_at: e.created_at(),
85+
event_id: Arc::new(e.id()),
86+
pubkey: PublicKeyPrefix::from(e.author_ref()),
87+
kind: e.kind(),
88+
tags: Arc::new(TagIndexes::from(e.iter_tags().map(|t| t.as_vec()))),
8989
}
9090
}
9191
}
@@ -237,32 +237,32 @@ impl<'a> From<RawEvent> for EventOrRawEvent<'a> {
237237
impl<'a> EventOrRawEvent<'a> {
238238
fn pubkey(&self) -> PublicKeyPrefix {
239239
match self {
240-
Self::Event(e) => PublicKeyPrefix::from(e.pubkey),
241-
Self::EventOwned(e) => PublicKeyPrefix::from(e.pubkey),
240+
Self::Event(e) => PublicKeyPrefix::from(e.author_ref()),
241+
Self::EventOwned(e) => PublicKeyPrefix::from(e.author_ref()),
242242
Self::Raw(r) => PublicKeyPrefix::from(r.pubkey),
243243
}
244244
}
245245

246246
fn created_at(&self) -> Timestamp {
247247
match self {
248-
Self::Event(e) => e.created_at,
249-
Self::EventOwned(e) => e.created_at,
248+
Self::Event(e) => e.created_at(),
249+
Self::EventOwned(e) => e.created_at(),
250250
Self::Raw(r) => r.created_at,
251251
}
252252
}
253253

254254
fn kind(&self) -> Kind {
255255
match self {
256-
Self::Event(e) => e.kind,
257-
Self::EventOwned(e) => e.kind,
256+
Self::Event(e) => e.kind(),
257+
Self::EventOwned(e) => e.kind(),
258258
Self::Raw(r) => r.kind,
259259
}
260260
}
261261

262262
fn tags(self) -> TagIndexes {
263263
match self {
264-
Self::Event(e) => TagIndexes::from(e.tags.iter().map(|t| t.as_vec())),
265-
Self::EventOwned(e) => TagIndexes::from(e.tags.iter().map(|t| t.as_vec())),
264+
Self::Event(e) => TagIndexes::from(e.iter_tags().map(|t| t.as_vec())),
265+
Self::EventOwned(e) => TagIndexes::from(e.iter_tags().map(|t| t.as_vec())),
266266
Self::Raw(r) => TagIndexes::from(r.tags.into_iter()),
267267
}
268268
}
@@ -412,8 +412,8 @@ impl DatabaseIndexes {
412412

413413
// Parse event ID
414414
let event_id: ArcEventId = match &event {
415-
EventOrRawEvent::Event(e) => Arc::new(e.id),
416-
EventOrRawEvent::EventOwned(e) => Arc::new(e.id),
415+
EventOrRawEvent::Event(e) => Arc::new(e.id()),
416+
EventOrRawEvent::EventOwned(e) => Arc::new(e.id()),
417417
EventOrRawEvent::Raw(r) => Arc::new(EventId::from_slice(&r.id)?),
418418
};
419419

@@ -889,19 +889,19 @@ mod tests {
889889

890890
// Test expected output
891891
let expected_output = vec![
892-
Event::from_json(EVENTS[12]).unwrap().id,
893-
Event::from_json(EVENTS[11]).unwrap().id,
892+
Event::from_json(EVENTS[12]).unwrap().id(),
893+
Event::from_json(EVENTS[11]).unwrap().id(),
894894
// Event 10 deleted by event 12
895895
// Event 9 replaced by event 10
896-
Event::from_json(EVENTS[8]).unwrap().id,
897-
Event::from_json(EVENTS[7]).unwrap().id,
898-
Event::from_json(EVENTS[6]).unwrap().id,
899-
Event::from_json(EVENTS[5]).unwrap().id,
900-
Event::from_json(EVENTS[4]).unwrap().id,
896+
Event::from_json(EVENTS[8]).unwrap().id(),
897+
Event::from_json(EVENTS[7]).unwrap().id(),
898+
Event::from_json(EVENTS[6]).unwrap().id(),
899+
Event::from_json(EVENTS[5]).unwrap().id(),
900+
Event::from_json(EVENTS[4]).unwrap().id(),
901901
// Event 3 deleted by Event 8
902902
// Event 2 replaced by Event 6
903-
Event::from_json(EVENTS[1]).unwrap().id,
904-
Event::from_json(EVENTS[0]).unwrap().id,
903+
Event::from_json(EVENTS[1]).unwrap().id(),
904+
Event::from_json(EVENTS[0]).unwrap().id(),
905905
];
906906
assert_eq!(
907907
indexes.query([Filter::new()], Order::Desc).await,
@@ -944,8 +944,8 @@ mod tests {
944944
)
945945
.await,
946946
vec![
947-
Event::from_json(EVENTS[4]).unwrap().id,
948-
Event::from_json(EVENTS[5]).unwrap().id,
947+
Event::from_json(EVENTS[4]).unwrap().id(),
948+
Event::from_json(EVENTS[5]).unwrap().id(),
949949
]
950950
);
951951

@@ -960,19 +960,19 @@ mod tests {
960960
Order::Desc
961961
)
962962
.await,
963-
vec![Event::from_json(EVENTS[4]).unwrap().id,]
963+
vec![Event::from_json(EVENTS[4]).unwrap().id()]
964964
);
965965

966966
assert_eq!(
967967
indexes
968968
.query([Filter::new().author(keys_a.public_key())], Order::Desc)
969969
.await,
970970
vec![
971-
Event::from_json(EVENTS[12]).unwrap().id,
972-
Event::from_json(EVENTS[8]).unwrap().id,
973-
Event::from_json(EVENTS[6]).unwrap().id,
974-
Event::from_json(EVENTS[1]).unwrap().id,
975-
Event::from_json(EVENTS[0]).unwrap().id,
971+
Event::from_json(EVENTS[12]).unwrap().id(),
972+
Event::from_json(EVENTS[8]).unwrap().id(),
973+
Event::from_json(EVENTS[6]).unwrap().id(),
974+
Event::from_json(EVENTS[1]).unwrap().id(),
975+
Event::from_json(EVENTS[0]).unwrap().id(),
976976
]
977977
);
978978

@@ -986,8 +986,8 @@ mod tests {
986986
)
987987
.await,
988988
vec![
989-
Event::from_json(EVENTS[1]).unwrap().id,
990-
Event::from_json(EVENTS[0]).unwrap().id,
989+
Event::from_json(EVENTS[1]).unwrap().id(),
990+
Event::from_json(EVENTS[0]).unwrap().id(),
991991
]
992992
);
993993

@@ -1001,8 +1001,8 @@ mod tests {
10011001
)
10021002
.await,
10031003
vec![
1004-
Event::from_json(EVENTS[1]).unwrap().id,
1005-
Event::from_json(EVENTS[0]).unwrap().id,
1004+
Event::from_json(EVENTS[1]).unwrap().id(),
1005+
Event::from_json(EVENTS[0]).unwrap().id(),
10061006
]
10071007
);
10081008

@@ -1012,9 +1012,9 @@ mod tests {
10121012
.query([Filter::new().identifier("id-1")], Order::Desc)
10131013
.await,
10141014
vec![
1015-
Event::from_json(EVENTS[6]).unwrap().id,
1016-
Event::from_json(EVENTS[5]).unwrap().id,
1017-
Event::from_json(EVENTS[1]).unwrap().id,
1015+
Event::from_json(EVENTS[6]).unwrap().id(),
1016+
Event::from_json(EVENTS[5]).unwrap().id(),
1017+
Event::from_json(EVENTS[1]).unwrap().id(),
10181018
]
10191019
);
10201020
}

crates/nostr-database/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ pub trait NostrDatabaseExt: NostrDatabase {
189189
.limit(1);
190190
let events: Vec<Event> = self.query(vec![filter], Order::Desc).await?;
191191
match events.first() {
192-
Some(event) => match Metadata::from_json(&event.content) {
192+
Some(event) => match Metadata::from_json(event.content()) {
193193
Ok(metadata) => Ok(Profile::new(public_key, metadata)),
194194
Err(e) => {
195195
tracing::error!("Impossible to deserialize profile metadata: {e}");
@@ -237,8 +237,8 @@ pub trait NostrDatabaseExt: NostrDatabase {
237237
.into_iter()
238238
.map(|e| {
239239
let metadata: Metadata =
240-
Metadata::from_json(&e.content).unwrap_or_default();
241-
Profile::new(e.pubkey, metadata)
240+
Metadata::from_json(e.content()).unwrap_or_default();
241+
Profile::new(e.author(), metadata)
242242
})
243243
.collect();
244244

crates/nostr-database/src/memory.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,15 @@ impl NostrDatabase for MemoryDatabase {
8787
if to_store {
8888
let mut events = self.events.write().await;
8989

90-
events.insert(event.id, event.clone());
90+
events.insert(event.id(), event.clone());
9191

9292
for event_id in to_discard.into_iter() {
9393
events.remove(&event_id);
9494
}
9595

9696
Ok(true)
9797
} else {
98-
tracing::warn!("Event {} not saved: unknown", event.id);
98+
tracing::warn!("Event {} not saved: unknown", event.id());
9999
Ok(false)
100100
}
101101
} else {

crates/nostr-database/src/raw.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -111,25 +111,25 @@ impl RawEvent {
111111
impl From<&Event> for RawEvent {
112112
fn from(event: &Event) -> Self {
113113
Self {
114-
id: event.id.to_bytes(),
115-
pubkey: event.pubkey.serialize(),
116-
created_at: event.created_at,
117-
kind: event.kind,
118-
tags: event.tags.iter().map(|t| t.as_vec()).collect(),
119-
content: event.content.clone(),
114+
id: event.id().to_bytes(),
115+
pubkey: event.author_ref().serialize(),
116+
created_at: event.created_at(),
117+
kind: event.kind(),
118+
tags: event.iter_tags().map(|t| t.as_vec()).collect(),
119+
content: event.content().to_string(),
120120
}
121121
}
122122
}
123123

124124
impl From<Event> for RawEvent {
125125
fn from(event: Event) -> Self {
126126
Self {
127-
id: event.id.to_bytes(),
128-
pubkey: event.pubkey.serialize(),
129-
created_at: event.created_at,
130-
kind: event.kind,
131-
tags: event.tags.into_iter().map(|t| t.to_vec()).collect(),
132-
content: event.content,
127+
id: event.id().to_bytes(),
128+
pubkey: event.author_ref().serialize(),
129+
created_at: event.created_at(),
130+
kind: event.kind(),
131+
content: event.content().to_string(),
132+
tags: event.into_iter_tags().map(|t| t.to_vec()).collect(),
133133
}
134134
}
135135
}

0 commit comments

Comments
 (0)