Split append_pdu -> append_pdu and build_and_append

Move all state event appending to append_state_pdu.
This commit is contained in:
Devin Ragotzy 2020-08-18 16:26:03 -04:00
parent cb68bf9e0c
commit 846a0098c1
10 changed files with 175 additions and 161 deletions

View file

@ -354,7 +354,7 @@ pub fn deactivate_route(
third_party_invite: None,
};
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: room_id.clone(),
sender: sender_id.clone(),

View file

@ -1,6 +1,8 @@
use super::State;
use crate::{
client_server, pdu::PduBuilder, server_server, utils, ConduitResult, Database, Error, Ruma,
client_server,
pdu::{PduBuilder, PduEvent},
server_server, utils, ConduitResult, Database, Error, Ruma,
};
use ruma::{
api::{
@ -142,24 +144,9 @@ pub async fn join_room_by_id_route(
Error::Conflict("Found event_id in sorted events that is not in resolved state")
})?;
db.rooms.append_pdu(
PduBuilder {
room_id: pdu.room_id().unwrap_or(&body.room_id).clone(),
sender: pdu.sender().clone(),
event_type: pdu.kind(),
content: pdu.content().clone(),
unsigned: Some(
pdu.unsigned()
.iter()
.map(|(k, v)| (k.clone(), v.clone()))
.collect(),
),
state_key: pdu.state_key(),
redacts: pdu.redacts().cloned(),
},
&db.globals,
&db.account_data,
)?;
// We do not rebuild the PDU in this case only insert to DB
db.rooms
.append_pdu(PduEvent::try_from(pdu)?, &db.globals, &db.account_data)?;
}
}
@ -171,7 +158,7 @@ pub async fn join_room_by_id_route(
third_party_invite: None,
};
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: body.room_id.clone(),
sender: sender_id.clone(),
@ -284,7 +271,7 @@ pub fn leave_room_route(
event.membership = member::MembershipState::Leave;
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: body.room_id.clone(),
sender: sender_id.clone(),
@ -312,7 +299,7 @@ pub fn invite_user_route(
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
if let invite_user::InvitationRecipient::UserId { user_id } = &body.recipient {
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: body.room_id.clone(),
sender: sender_id.clone(),
@ -369,7 +356,7 @@ pub fn kick_user_route(
event.membership = ruma::events::room::member::MembershipState::Leave;
// TODO: reason
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: body.room_id.clone(),
sender: sender_id.clone(),
@ -424,7 +411,7 @@ pub fn ban_user_route(
},
)?;
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: body.room_id.clone(),
sender: sender_id.clone(),
@ -470,7 +457,7 @@ pub fn unban_user_route(
event.membership = ruma::events::room::member::MembershipState::Leave;
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: body.room_id.clone(),
sender: sender_id.clone(),

View file

@ -25,7 +25,7 @@ pub fn send_message_event_route(
let mut unsigned = serde_json::Map::new();
unsigned.insert("transaction_id".to_owned(), body.txn_id.clone().into());
let event_id = db.rooms.append_pdu(
let event_id = db.rooms.build_and_append_pdu(
PduBuilder {
room_id: body.room_id.clone(),
sender: sender_id.clone(),

View file

@ -31,7 +31,7 @@ pub fn set_displayname_route(
// Send a new membership event and presence update into all joined rooms
for room_id in db.rooms.rooms_joined(&sender_id) {
let room_id = room_id?;
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: room_id.clone(),
sender: sender_id.clone(),
@ -134,7 +134,7 @@ pub fn set_avatar_url_route(
// Send a new membership event and presence update into all joined rooms
for room_id in db.rooms.rooms_joined(&sender_id) {
let room_id = room_id?;
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: room_id.clone(),
sender: sender_id.clone(),

View file

@ -18,7 +18,7 @@ pub fn redact_event_route(
) -> ConduitResult<redact_event::Response> {
let sender_id = body.sender_id.as_ref().expect("user is authenticated");
let event_id = db.rooms.append_pdu(
let event_id = db.rooms.build_and_append_pdu(
PduBuilder {
room_id: body.room_id.clone(),
sender: sender_id.clone(),

View file

@ -56,7 +56,7 @@ pub fn create_room_route(
content.room_version = RoomVersionId::Version6;
// 1. The room create event
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: room_id.clone(),
sender: sender_id.clone(),
@ -71,7 +71,7 @@ pub fn create_room_route(
)?;
// 2. Let the room creator join
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: room_id.clone(),
sender: sender_id.clone(),
@ -120,7 +120,7 @@ pub fn create_room_route(
})
.expect("event is valid, we just created it")
};
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: room_id.clone(),
sender: sender_id.clone(),
@ -144,7 +144,7 @@ pub fn create_room_route(
});
// 4.1 Join Rules
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: room_id.clone(),
sender: sender_id.clone(),
@ -169,7 +169,7 @@ pub fn create_room_route(
)?;
// 4.2 History Visibility
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: room_id.clone(),
sender: sender_id.clone(),
@ -187,7 +187,7 @@ pub fn create_room_route(
)?;
// 4.3 Guest Access
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: room_id.clone(),
sender: sender_id.clone(),
@ -224,7 +224,7 @@ pub fn create_room_route(
continue;
}
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: room_id.clone(),
sender: sender_id.clone(),
@ -243,7 +243,7 @@ pub fn create_room_route(
// 6. Events implied by name and topic
if let Some(name) = &body.name {
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: room_id.clone(),
sender: sender_id.clone(),
@ -264,7 +264,7 @@ pub fn create_room_route(
}
if let Some(topic) = &body.topic {
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: room_id.clone(),
sender: sender_id.clone(),
@ -284,7 +284,7 @@ pub fn create_room_route(
// 7. Events implied by invite (and TODO: invite_3pid)
for user in &body.invite {
db.rooms.append_pdu(
db.rooms.build_and_append_pdu(
PduBuilder {
room_id: room_id.clone(),
sender: sender_id.clone(),

View file

@ -57,7 +57,7 @@ pub fn send_state_event_for_key_route(
}
}
let event_id = db.rooms.append_pdu(
let event_id = db.rooms.build_and_append_pdu(
PduBuilder {
room_id: body.room_id.clone(),
sender: sender_id.clone(),