From 6c937c4a905ae85f8269d3e85adb3a92f91b5fdc Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 22 Jan 2024 12:49:35 -0800 Subject: [PATCH] Make POST /contributors API idempotent Co-authored-by: Marshall --- crates/collab/src/db/queries/contributors.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/crates/collab/src/db/queries/contributors.rs b/crates/collab/src/db/queries/contributors.rs index 593409670b3feb6494ec6e03f566570aac01cf78..f0e352e2f2cfdc184ba7cca58c207f42d2cff402 100644 --- a/crates/collab/src/db/queries/contributors.rs +++ b/crates/collab/src/db/queries/contributors.rs @@ -37,11 +37,17 @@ impl Database { &*tx, ) .await?; - contributor::ActiveModel { + + contributor::Entity::insert(contributor::ActiveModel { user_id: ActiveValue::Set(user.id), signed_at: ActiveValue::NotSet, - } - .insert(&*tx) + }) + .on_conflict( + OnConflict::column(contributor::Column::UserId) + .do_nothing() + .to_owned(), + ) + .exec_without_returning(&*tx) .await?; Ok(()) })