pull/4612/head
dullbananas 1 month ago committed by GitHub
parent c2c3003365
commit fad321efc6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -157,12 +157,13 @@ impl SiteLanguage {
.build_transaction() .build_transaction()
.run(|conn| { .run(|conn| {
Box::pin(async move { Box::pin(async move {
use crate::schema::site_language::dsl::{site_id, site_language}; use crate::schema::site_language::dsl::{language_id, site_id, site_language};
// Clear the current languages // Delete old languages, not including new languages
delete(site_language.filter(site_id.eq(for_site_id))) let delete_old = delete(site_language)
.execute(conn) .filter(site_id.eq(for_site_id))
.await?; .filter(language_id.ne_all(&lang_ids))
.execute(conn);
let forms = lang_ids let forms = lang_ids
.into_iter() .into_iter()
@ -172,10 +173,14 @@ impl SiteLanguage {
}) })
.collect::<Vec<_>>(); .collect::<Vec<_>>();
insert_into(site_language) // Insert new languages
let insert_new = insert_into(site_language)
.values(forms) .values(forms)
.get_result::<Self>(conn) .on_conflict((site_id, language_id))
.await?; .do_nothing()
.execute(conn);
tokio::try_join!(delete_old, insert_new)?;
CommunityLanguage::limit_languages(conn, instance_id).await?; CommunityLanguage::limit_languages(conn, instance_id).await?;

Loading…
Cancel
Save