Add shorteventid to pdu_id query; reorg related id query interface.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-10-03 05:01:00 +00:00
parent 1d14426018
commit 75509d50ca
2 changed files with 49 additions and 26 deletions

View File

@@ -1126,11 +1126,8 @@ async fn calculate_state_changes<'a>(
.chain(lazy_state_ids.stream()) .chain(lazy_state_ids.stream())
.broad_filter_map(|shorteventid| { .broad_filter_map(|shorteventid| {
services services
.short .timeline
.get_eventid_from_short(shorteventid) .get_pdu_from_shorteventid(shorteventid)
.and_then(async |event_id: OwnedEventId| {
services.timeline.get_pdu(&event_id).await
})
.ok() .ok()
}) })
.collect::<Vec<_>>() .collect::<Vec<_>>()

View File

@@ -258,27 +258,6 @@ pub async fn get_shortstatehash(
.await .await
} }
/// Returns the `shorteventid` from the `pdu_id`
#[implement(Service)]
pub async fn get_shorteventid_from_pdu_id(&self, pdu_id: &PduId) -> Result<ShortEventId> {
let event_id = self.get_event_id_from_pdu_id(pdu_id).await?;
self.services
.short
.get_shorteventid(&event_id)
.await
}
/// Returns the `event_id` from the `pdu_id`
#[implement(Service)]
pub async fn get_event_id_from_pdu_id(&self, pdu_id: &PduId) -> Result<OwnedEventId> {
let pdu_id: RawPduId = (*pdu_id).into();
self.get_pdu_from_id(&pdu_id)
.map_ok(|pdu| pdu.event_id)
.await
}
/// Returns the shorteventid in the room preceding the exclusive `before` param. /// Returns the shorteventid in the room preceding the exclusive `before` param.
/// `before` does not have to be a valid shorteventid or in the room. /// `before` does not have to be a valid shorteventid or in the room.
#[implement(Service)] #[implement(Service)]
@@ -447,6 +426,20 @@ fn pdu_count_to_id(shortroomid: ShortRoomId, count: PduCount, dir: Direction) ->
pdu_id.into() pdu_id.into()
} }
/// Returns the pdu from shorteventid
///
/// Checks the `eventid_outlierpdu` Tree if not found in the timeline.
#[implement(Service)]
pub async fn get_pdu_from_shorteventid(&self, shorteventid: ShortEventId) -> Result<PduEvent> {
let event_id: OwnedEventId = self
.services
.short
.get_eventid_from_short(shorteventid)
.await?;
self.get_pdu(&event_id).await
}
/// Returns the pdu. /// Returns the pdu.
/// ///
/// Checks the `eventid_outlierpdu` Tree if not found in the timeline. /// Checks the `eventid_outlierpdu` Tree if not found in the timeline.
@@ -567,6 +560,39 @@ pub async fn get_pdu_count(&self, event_id: &EventId) -> Result<PduCount> {
.map(RawPduId::pdu_count) .map(RawPduId::pdu_count)
} }
/// Returns the `shorteventid` from the `pdu_id`
#[implement(Service)]
pub async fn get_shorteventid_from_pdu_id(&self, pdu_id: &PduId) -> Result<ShortEventId> {
let event_id = self.get_event_id_from_pdu_id(pdu_id).await?;
self.services
.short
.get_shorteventid(&event_id)
.await
}
/// Returns the `event_id` from the `pdu_id`
#[implement(Service)]
pub async fn get_event_id_from_pdu_id(&self, pdu_id: &PduId) -> Result<OwnedEventId> {
let pdu_id: RawPduId = (*pdu_id).into();
self.get_pdu_from_id(&pdu_id)
.map_ok(|pdu| pdu.event_id)
.await
}
/// Returns the `pdu_id` from the `shorteventid`
#[implement(Service)]
pub async fn get_pdu_id_from_shorteventid(&self, shorteventid: ShortEventId) -> Result<RawPduId> {
let event_id: OwnedEventId = self
.services
.short
.get_eventid_from_short(shorteventid)
.await?;
self.get_pdu_id(&event_id).await
}
/// Returns the pdu's id. /// Returns the pdu's id.
#[implement(Service)] #[implement(Service)]
pub async fn get_pdu_id(&self, event_id: &EventId) -> Result<RawPduId> { pub async fn get_pdu_id(&self, event_id: &EventId) -> Result<RawPduId> {