From a1fe0f3fff20d68ea51346310ed7f52a2c28e09f Mon Sep 17 00:00:00 2001 From: Charles Hall Date: Mon, 30 Sep 2024 20:52:06 -0700 Subject: [PATCH] add service type for short This will be necessary in the near future. --- src/service.rs | 2 +- src/service/rooms/short.rs | 81 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 79 insertions(+), 4 deletions(-) diff --git a/src/service.rs b/src/service.rs index 1c45fbcd..cad5e31b 100644 --- a/src/service.rs +++ b/src/service.rs @@ -93,7 +93,7 @@ impl Services { db, }, search: db, - short: db, + short: rooms::short::Service::new(db), state: rooms::state::Service { db, }, diff --git a/src/service/rooms/short.rs b/src/service/rooms/short.rs index 790b1d04..d165ef9e 100644 --- a/src/service/rooms/short.rs +++ b/src/service/rooms/short.rs @@ -1,6 +1,8 @@ -mod data; +use std::sync::Arc; -pub(crate) use data::Data; +use ruma::{events::StateEventType, EventId, RoomId}; + +use crate::utils::error::Result; macro_rules! short_id_type { ($name:ident) => { @@ -25,4 +27,77 @@ short_id_type!(ShortEventId); short_id_type!(ShortStateHash); short_id_type!(ShortStateKey); -pub(crate) type Service = &'static dyn Data; +mod data; + +pub(crate) use data::Data; + +pub(crate) struct Service { + db: &'static dyn Data, +} + +impl Service { + pub(crate) fn new(db: &'static dyn Data) -> Self { + Self { + db, + } + } + + pub(crate) fn get_or_create_shorteventid( + &self, + event_id: &EventId, + ) -> Result { + self.db.get_or_create_shorteventid(event_id) + } + + pub(crate) fn get_shortstatekey( + &self, + event_type: &StateEventType, + state_key: &str, + ) -> Result> { + self.db.get_shortstatekey(event_type, state_key) + } + + pub(crate) fn get_or_create_shortstatekey( + &self, + event_type: &StateEventType, + state_key: &str, + ) -> Result { + self.db.get_or_create_shortstatekey(event_type, state_key) + } + + pub(crate) fn get_eventid_from_short( + &self, + shorteventid: ShortEventId, + ) -> Result> { + self.db.get_eventid_from_short(shorteventid) + } + + pub(crate) fn get_statekey_from_short( + &self, + shortstatekey: ShortStateKey, + ) -> Result<(StateEventType, String)> { + self.db.get_statekey_from_short(shortstatekey) + } + + /// Returns `(shortstatehash, already_existed)` + pub(crate) fn get_or_create_shortstatehash( + &self, + state_hash: &[u8], + ) -> Result<(ShortStateHash, bool)> { + self.db.get_or_create_shortstatehash(state_hash) + } + + pub(crate) fn get_shortroomid( + &self, + room_id: &RoomId, + ) -> Result> { + self.db.get_shortroomid(room_id) + } + + pub(crate) fn get_or_create_shortroomid( + &self, + room_id: &RoomId, + ) -> Result { + self.db.get_or_create_shortroomid(room_id) + } +}