Skip to main content

QueryGroupMessage

Trait QueryGroupMessage 

Source
pub trait QueryGroupMessage {
Show 20 methods // Required methods fn get_group_messages( &self, group_id: &GroupId, args: &MsgQueryArgs, ) -> Result<Vec<StoredGroupMessage>, ConnectionError>; fn count_group_messages( &self, group_id: &GroupId, args: &MsgQueryArgs, ) -> Result<i64, ConnectionError>; fn missing_messages( &self, group_id: &GroupId, sequence_ids: &[u64], ) -> Result<Vec<StoredGroupMessage>, ConnectionError>; fn group_messages_paged( &self, args: &MsgQueryArgs, offset: i64, ) -> Result<Vec<StoredGroupMessage>, ConnectionError>; fn get_group_messages_with_reactions( &self, group_id: &GroupId, args: &MsgQueryArgs, ) -> Result<Vec<StoredGroupMessageWithReactions>, ConnectionError>; fn get_inbound_relations( &self, group_id: &GroupId, message_ids: &[&[u8]], relation_query: RelationQuery, ) -> Result<InboundRelations, ConnectionError>; fn get_outbound_relations( &self, group_id: &GroupId, message_ids: &[&[u8]], ) -> Result<OutboundRelations, ConnectionError>; fn get_inbound_relation_counts( &self, group_id: &GroupId, message_ids: &[&[u8]], relation_query: RelationQuery, ) -> Result<RelationCounts, ConnectionError>; fn get_group_message<MessageId: AsRef<[u8]>>( &self, id: MessageId, ) -> Result<Option<StoredGroupMessage>, ConnectionError>; fn get_latest_message_times_by_sender<Id: AsRef<[u8]>>( &self, group_id: Id, allowed_content_types: &[ContentType], ) -> Result<LatestMessageTimeBySender, ConnectionError>; fn write_conn_get_group_message<MessageId: AsRef<[u8]>>( &self, id: MessageId, ) -> Result<Option<StoredGroupMessage>, ConnectionError>; fn get_group_message_by_timestamp<Id: AsRef<[u8]>>( &self, group_id: Id, timestamp: i64, ) -> Result<Option<StoredGroupMessage>, ConnectionError>; fn get_group_message_by_cursor<Id: AsRef<[u8]>>( &self, group_id: Id, sequence_id: Cursor, ) -> Result<Option<StoredGroupMessage>, ConnectionError>; fn set_delivery_status_to_published<MessageId: AsRef<[u8]>>( &self, msg_id: &MessageId, timestamp: u64, cursor: Cursor, message_expire_at_ns: Option<i64>, ) -> Result<usize, StorageError>; fn set_delivery_status_to_failed<MessageId: AsRef<[u8]>>( &self, msg_id: &MessageId, ) -> Result<usize, ConnectionError>; fn delete_expired_messages( &self, ) -> Result<Vec<StoredGroupMessage>, ConnectionError>; fn min_expire_at_ns(&self) -> Result<Option<i64>, ConnectionError>; fn delete_message_by_id<MessageId: AsRef<[u8]>>( &self, message_id: MessageId, ) -> Result<usize, ConnectionError>; fn messages_newer_than( &self, cursors_by_group: &HashMap<Vec<u8>, Cursor>, ) -> Result<Vec<(GroupId, Cursor)>, ConnectionError>; fn clear_messages( &self, group_ids: Option<&[GroupId]>, retention_days: Option<u32>, ) -> Result<usize, ConnectionError>;
}

Required Methods§

Source

fn get_group_messages( &self, group_id: &GroupId, args: &MsgQueryArgs, ) -> Result<Vec<StoredGroupMessage>, ConnectionError>

Query for group messages

Source

fn count_group_messages( &self, group_id: &GroupId, args: &MsgQueryArgs, ) -> Result<i64, ConnectionError>

Count group messages matching the given criteria

Source

fn missing_messages( &self, group_id: &GroupId, sequence_ids: &[u64], ) -> Result<Vec<StoredGroupMessage>, ConnectionError>

Return all Application-kind messages stored locally for group_id whose sequence_id is NOT in the provided list. Used by tools that compare local state against an authoritative set of sequence ids (e.g. xdbg’s healthcheck validator).

Source

fn group_messages_paged( &self, args: &MsgQueryArgs, offset: i64, ) -> Result<Vec<StoredGroupMessage>, ConnectionError>

Source

fn get_group_messages_with_reactions( &self, group_id: &GroupId, args: &MsgQueryArgs, ) -> Result<Vec<StoredGroupMessageWithReactions>, ConnectionError>

Query for group messages with their reactions

Source

fn get_inbound_relations( &self, group_id: &GroupId, message_ids: &[&[u8]], relation_query: RelationQuery, ) -> Result<InboundRelations, ConnectionError>

Source

fn get_outbound_relations( &self, group_id: &GroupId, message_ids: &[&[u8]], ) -> Result<OutboundRelations, ConnectionError>

Source

fn get_inbound_relation_counts( &self, group_id: &GroupId, message_ids: &[&[u8]], relation_query: RelationQuery, ) -> Result<RelationCounts, ConnectionError>

Source

fn get_group_message<MessageId: AsRef<[u8]>>( &self, id: MessageId, ) -> Result<Option<StoredGroupMessage>, ConnectionError>

Get a particular group message

Source

fn get_latest_message_times_by_sender<Id: AsRef<[u8]>>( &self, group_id: Id, allowed_content_types: &[ContentType], ) -> Result<LatestMessageTimeBySender, ConnectionError>

Source

fn write_conn_get_group_message<MessageId: AsRef<[u8]>>( &self, id: MessageId, ) -> Result<Option<StoredGroupMessage>, ConnectionError>

Get a particular group message using the write connection

Source

fn get_group_message_by_timestamp<Id: AsRef<[u8]>>( &self, group_id: Id, timestamp: i64, ) -> Result<Option<StoredGroupMessage>, ConnectionError>

Source

fn get_group_message_by_cursor<Id: AsRef<[u8]>>( &self, group_id: Id, sequence_id: Cursor, ) -> Result<Option<StoredGroupMessage>, ConnectionError>

Source

fn set_delivery_status_to_published<MessageId: AsRef<[u8]>>( &self, msg_id: &MessageId, timestamp: u64, cursor: Cursor, message_expire_at_ns: Option<i64>, ) -> Result<usize, StorageError>

Source

fn set_delivery_status_to_failed<MessageId: AsRef<[u8]>>( &self, msg_id: &MessageId, ) -> Result<usize, ConnectionError>

Source

fn delete_expired_messages( &self, ) -> Result<Vec<StoredGroupMessage>, ConnectionError>

Source

fn min_expire_at_ns(&self) -> Result<Option<i64>, ConnectionError>

The soonest expire_at_ns among published Application messages that have an expiry set, or None if no disappearing messages exist. Note this can return a timestamp already in the past (an expiry that elapsed while the worker was asleep) — the caller clamps the resulting sleep to >= 0 and deletes on the next wake. Same filters as delete_expired_messages without its expire_at_ns <= now bound.

Source

fn delete_message_by_id<MessageId: AsRef<[u8]>>( &self, message_id: MessageId, ) -> Result<usize, ConnectionError>

Source

fn messages_newer_than( &self, cursors_by_group: &HashMap<Vec<u8>, Cursor>, ) -> Result<Vec<(GroupId, Cursor)>, ConnectionError>

Stored messages above each group’s cursor, attributed to their group. The attribution matters: sequence ids are not scoped per group, so a caller folding these into per-group state must never mix groups.

Source

fn clear_messages( &self, group_ids: Option<&[GroupId]>, retention_days: Option<u32>, ) -> Result<usize, ConnectionError>

Clear messages from the database with optional filtering.

§Arguments
  • group_ids - If provided, only delete messages in these groups. If None, delete from all groups.
  • retention_days - If provided, only delete messages older than this many days. If None, delete all matching messages.
§Returns

The number of messages deleted.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<T> QueryGroupMessage for &T

Source§

fn get_group_messages( &self, group_id: &GroupId, args: &MsgQueryArgs, ) -> Result<Vec<StoredGroupMessage>, ConnectionError>

Query for group messages

Source§

fn count_group_messages( &self, group_id: &GroupId, args: &MsgQueryArgs, ) -> Result<i64, ConnectionError>

Count group messages matching the given criteria

Source§

fn get_group_messages_with_reactions( &self, group_id: &GroupId, args: &MsgQueryArgs, ) -> Result<Vec<StoredGroupMessageWithReactions>, ConnectionError>

Query for group messages with their reactions

Source§

fn get_group_message<MessageId: AsRef<[u8]>>( &self, id: MessageId, ) -> Result<Option<StoredGroupMessage>, ConnectionError>

Get a particular group message

Source§

fn write_conn_get_group_message<MessageId: AsRef<[u8]>>( &self, id: MessageId, ) -> Result<Option<StoredGroupMessage>, ConnectionError>

Get a particular group message using the write connection

Source§

fn missing_messages( &self, group_id: &GroupId, sequence_ids: &[u64], ) -> Result<Vec<StoredGroupMessage>, ConnectionError>

Source§

fn group_messages_paged( &self, args: &MsgQueryArgs, offset: i64, ) -> Result<Vec<StoredGroupMessage>, ConnectionError>

Source§

fn get_inbound_relations( &self, group_id: &GroupId, message_ids: &[&[u8]], relation_query: RelationQuery, ) -> Result<InboundRelations, ConnectionError>

Source§

fn get_outbound_relations( &self, group_id: &GroupId, message_ids: &[&[u8]], ) -> Result<OutboundRelations, ConnectionError>

Source§

fn get_inbound_relation_counts( &self, group_id: &GroupId, message_ids: &[&[u8]], relation_query: RelationQuery, ) -> Result<RelationCounts, ConnectionError>

Source§

fn get_latest_message_times_by_sender<Id: AsRef<[u8]>>( &self, group_id: Id, allowed_content_types: &[ContentType], ) -> Result<LatestMessageTimeBySender, ConnectionError>

Source§

fn get_group_message_by_timestamp<Id: AsRef<[u8]>>( &self, group_id: Id, timestamp: i64, ) -> Result<Option<StoredGroupMessage>, ConnectionError>

Source§

fn get_group_message_by_cursor<Id: AsRef<[u8]>>( &self, group_id: Id, cursor: Cursor, ) -> Result<Option<StoredGroupMessage>, ConnectionError>

Source§

fn set_delivery_status_to_published<MessageId: AsRef<[u8]>>( &self, msg_id: &MessageId, timestamp: u64, cursor: Cursor, message_expire_at_ns: Option<i64>, ) -> Result<usize, StorageError>

Source§

fn set_delivery_status_to_failed<MessageId: AsRef<[u8]>>( &self, msg_id: &MessageId, ) -> Result<usize, ConnectionError>

Source§

fn delete_expired_messages( &self, ) -> Result<Vec<StoredGroupMessage>, ConnectionError>

Source§

fn min_expire_at_ns(&self) -> Result<Option<i64>, ConnectionError>

Source§

fn delete_message_by_id<MessageId: AsRef<[u8]>>( &self, message_id: MessageId, ) -> Result<usize, ConnectionError>

Source§

fn messages_newer_than( &self, cursors_by_group: &HashMap<Vec<u8>, Cursor>, ) -> Result<Vec<(GroupId, Cursor)>, ConnectionError>

Source§

fn clear_messages( &self, group_ids: Option<&[GroupId]>, retention_days: Option<u32>, ) -> Result<usize, ConnectionError>

Implementors§