From 3268cce41a948ea422f0fe0389cbd8d2e260c047 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Wed, 23 Aug 2023 11:30:43 -0700 Subject: [PATCH] Fix error in update_channel_buffer when there are no operations to store Co-authored-by: Mikayla --- crates/collab/src/db/queries/buffers.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/crates/collab/src/db/queries/buffers.rs b/crates/collab/src/db/queries/buffers.rs index 83f5b87079416259f673f1ddeedad4e31e72aa21..a38693bace24364e00ab54bed79c68a95a30f9f0 100644 --- a/crates/collab/src/db/queries/buffers.rs +++ b/crates/collab/src/db/queries/buffers.rs @@ -215,7 +215,7 @@ impl Database { user: UserId, operations: &[proto::Operation], ) -> Result> { - self.transaction(|tx| async move { + self.transaction(move |tx| async move { self.check_user_is_channel_member(channel_id, user, &*tx) .await?; @@ -240,11 +240,15 @@ impl Database { .await? .ok_or_else(|| anyhow!("missing buffer snapshot"))?; - buffer_operation::Entity::insert_many(operations.iter().filter_map(|operation| { - operation_to_storage(operation, &buffer, serialization_version) - })) - .exec(&*tx) - .await?; + let operations = operations + .iter() + .filter_map(|op| operation_to_storage(op, &buffer, serialization_version)) + .collect::>(); + if !operations.is_empty() { + buffer_operation::Entity::insert_many(operations) + .exec(&*tx) + .await?; + } let mut connections = Vec::new(); let mut rows = channel_buffer_collaborator::Entity::find()