mirror of https://gitlab.com/famedly/conduit.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
1.1 KiB
28 lines
1.1 KiB
use ruma::{CanonicalJsonObject, EventId}; |
|
|
|
use crate::{database::KeyValueDatabase, service, Error, PduEvent, Result}; |
|
|
|
impl service::rooms::outlier::Data for KeyValueDatabase { |
|
fn get_outlier_pdu_json(&self, event_id: &EventId) -> Result<Option<CanonicalJsonObject>> { |
|
self.eventid_outlierpdu |
|
.get(event_id.as_bytes())? |
|
.map_or(Ok(None), |pdu| { |
|
serde_json::from_slice(&pdu).map_err(|_| Error::bad_database("Invalid PDU in db.")) |
|
}) |
|
} |
|
|
|
fn get_outlier_pdu(&self, event_id: &EventId) -> Result<Option<PduEvent>> { |
|
self.eventid_outlierpdu |
|
.get(event_id.as_bytes())? |
|
.map_or(Ok(None), |pdu| { |
|
serde_json::from_slice(&pdu).map_err(|_| Error::bad_database("Invalid PDU in db.")) |
|
}) |
|
} |
|
|
|
fn add_pdu_outlier(&self, event_id: &EventId, pdu: &CanonicalJsonObject) -> Result<()> { |
|
self.eventid_outlierpdu.insert( |
|
event_id.as_bytes(), |
|
&serde_json::to_vec(&pdu).expect("CanonicalJsonObject is valid"), |
|
) |
|
} |
|
}
|
|
|