summaryrefslogtreecommitdiff
path: root/src/database/key_value/rooms/outlier.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/database/key_value/rooms/outlier.rs')
-rw-r--r--src/database/key_value/rooms/outlier.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/database/key_value/rooms/outlier.rs b/src/database/key_value/rooms/outlier.rs
new file mode 100644
index 0000000..c979d25
--- /dev/null
+++ b/src/database/key_value/rooms/outlier.rs
@@ -0,0 +1,24 @@
+impl service::room::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"),
+ )
+ }
+}