improve appservice::Data interface encap
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
parent
30b5ad3870
commit
0f1432f448
4 changed files with 20 additions and 18 deletions
|
@ -22,7 +22,7 @@ pub(super) async fn appservice(subcommand: Appservice) -> Result<RoomMessageEven
|
||||||
},
|
},
|
||||||
Appservice::All => {
|
Appservice::All => {
|
||||||
let timer = tokio::time::Instant::now();
|
let timer = tokio::time::Instant::now();
|
||||||
let results = services().appservice.db.all();
|
let results = services().appservice.all();
|
||||||
let query_time = timer.elapsed();
|
let query_time = timer.elapsed();
|
||||||
|
|
||||||
Ok(RoomMessageEventContent::notice_markdown(format!(
|
Ok(RoomMessageEventContent::notice_markdown(format!(
|
||||||
|
|
|
@ -10,7 +10,7 @@ pub(super) async fn room_alias(subcommand: RoomAlias) -> Result<RoomMessageEvent
|
||||||
alias,
|
alias,
|
||||||
} => {
|
} => {
|
||||||
let timer = tokio::time::Instant::now();
|
let timer = tokio::time::Instant::now();
|
||||||
let results = services().rooms.alias.db.resolve_local_alias(&alias);
|
let results = services().rooms.alias.resolve_local_alias(&alias);
|
||||||
let query_time = timer.elapsed();
|
let query_time = timer.elapsed();
|
||||||
|
|
||||||
Ok(RoomMessageEventContent::notice_markdown(format!(
|
Ok(RoomMessageEventContent::notice_markdown(format!(
|
||||||
|
@ -21,7 +21,7 @@ pub(super) async fn room_alias(subcommand: RoomAlias) -> Result<RoomMessageEvent
|
||||||
room_id,
|
room_id,
|
||||||
} => {
|
} => {
|
||||||
let timer = tokio::time::Instant::now();
|
let timer = tokio::time::Instant::now();
|
||||||
let results = services().rooms.alias.db.local_aliases_for_room(&room_id);
|
let results = services().rooms.alias.local_aliases_for_room(&room_id);
|
||||||
let query_time = timer.elapsed();
|
let query_time = timer.elapsed();
|
||||||
|
|
||||||
let aliases: Vec<_> = results.collect();
|
let aliases: Vec<_> = results.collect();
|
||||||
|
@ -32,7 +32,7 @@ pub(super) async fn room_alias(subcommand: RoomAlias) -> Result<RoomMessageEvent
|
||||||
},
|
},
|
||||||
RoomAlias::AllLocalAliases => {
|
RoomAlias::AllLocalAliases => {
|
||||||
let timer = tokio::time::Instant::now();
|
let timer = tokio::time::Instant::now();
|
||||||
let results = services().rooms.alias.db.all_local_aliases();
|
let results = services().rooms.alias.all_local_aliases();
|
||||||
let query_time = timer.elapsed();
|
let query_time = timer.elapsed();
|
||||||
|
|
||||||
let aliases: Vec<_> = results.collect();
|
let aliases: Vec<_> = results.collect();
|
||||||
|
|
|
@ -51,17 +51,4 @@ impl Data {
|
||||||
.map_err(|_| Error::bad_database("Invalid id bytes in id_appserviceregistrations."))
|
.map_err(|_| Error::bad_database("Invalid id bytes in id_appserviceregistrations."))
|
||||||
})))
|
})))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn all(&self) -> Result<Vec<(String, Registration)>> {
|
|
||||||
self.iter_ids()?
|
|
||||||
.filter_map(Result::ok)
|
|
||||||
.map(move |id| {
|
|
||||||
Ok((
|
|
||||||
id.clone(),
|
|
||||||
self.get_registration(&id)?
|
|
||||||
.expect("iter_ids only returns appservices that exist"),
|
|
||||||
))
|
|
||||||
})
|
|
||||||
.collect()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,7 +124,7 @@ impl Service {
|
||||||
let mut registration_info = BTreeMap::new();
|
let mut registration_info = BTreeMap::new();
|
||||||
let db = Data::new(db);
|
let db = Data::new(db);
|
||||||
// Inserting registrations into cache
|
// Inserting registrations into cache
|
||||||
for appservice in db.all()? {
|
for appservice in iter_ids(&db)? {
|
||||||
registration_info.insert(
|
registration_info.insert(
|
||||||
appservice.0,
|
appservice.0,
|
||||||
appservice
|
appservice
|
||||||
|
@ -140,6 +140,8 @@ impl Service {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn all(&self) -> Result<Vec<(String, Registration)>> { iter_ids(&self.db) }
|
||||||
|
|
||||||
/// Registers an appservice and returns the ID to the caller
|
/// Registers an appservice and returns the ID to the caller
|
||||||
pub async fn register_appservice(&self, yaml: Registration) -> Result<String> {
|
pub async fn register_appservice(&self, yaml: Registration) -> Result<String> {
|
||||||
//TODO: Check for collisions between exclusive appservice namespaces
|
//TODO: Check for collisions between exclusive appservice namespaces
|
||||||
|
@ -231,3 +233,16 @@ impl Service {
|
||||||
self.registration_info.read()
|
self.registration_info.read()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn iter_ids(db: &Data) -> Result<Vec<(String, Registration)>> {
|
||||||
|
db.iter_ids()?
|
||||||
|
.filter_map(Result::ok)
|
||||||
|
.map(move |id| {
|
||||||
|
Ok((
|
||||||
|
id.clone(),
|
||||||
|
db.get_registration(&id)?
|
||||||
|
.expect("iter_ids only returns appservices that exist"),
|
||||||
|
))
|
||||||
|
})
|
||||||
|
.collect()
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue