- for l in lang_ids {
- let form = CommunityLanguageForm {
- community_id: for_community_id,
- language_id: l,
- };
- insert_into(community_language)
- .values(form)
- .get_result::<Self>(conn)
- .await?;
+ let insert_res = insert_into(community_language)
+ .values(form)
+ .get_result::<Self>(conn)
+ .await;
+
+ if let Err(Error::DatabaseError(UniqueViolation, _info)) = insert_res {
+ // race condition: this function was probably called simultaneously from another caller. ignore error
+ // tracing::warn!("unique error: {_info:#?}");
+ // _info.constraint_name() should be = "community_language_community_id_language_id_key"
+ return Ok(());
+ } else {
+ insert_res?;