conduwuit/src/database/key_value/rooms/pdu_metadata.rs

34 lines
1.1 KiB
Rust
Raw Normal View History

use std::sync::Arc;
use ruma::{RoomId, EventId};
2022-09-07 13:25:51 +02:00
use crate::{service, database::KeyValueDatabase, Result};
2022-10-05 15:33:57 +02:00
impl service::rooms::pdu_metadata::Data for Arc<KeyValueDatabase> {
fn mark_as_referenced(&self, room_id: &RoomId, event_ids: &[Arc<EventId>]) -> Result<()> {
for prev in event_ids {
let mut key = room_id.as_bytes().to_vec();
key.extend_from_slice(prev.as_bytes());
self.referencedevents.insert(&key, &[])?;
}
Ok(())
}
fn is_event_referenced(&self, room_id: &RoomId, event_id: &EventId) -> Result<bool> {
2021-07-20 12:41:35 +02:00
let mut key = room_id.as_bytes().to_vec();
key.extend_from_slice(event_id.as_bytes());
Ok(self.referencedevents.get(&key)?.is_some())
}
fn mark_event_soft_failed(&self, event_id: &EventId) -> Result<()> {
self.softfailedeventids.insert(event_id.as_bytes(), &[])
2021-08-28 11:39:33 +02:00
}
fn is_event_soft_failed(&self, event_id: &EventId) -> Result<bool> {
2021-08-28 11:39:33 +02:00
self.softfailedeventids
.get(event_id.as_bytes())
2021-08-28 11:39:33 +02:00
.map(|o| o.is_some())
}
}