fix: fix subscription and mikan doppel
This commit is contained in:
@@ -248,8 +248,15 @@ impl Model {
|
||||
subscriber_id: ActiveValue::Set(subscriber_id),
|
||||
..Default::default()
|
||||
})
|
||||
.on_conflict_do_nothing()
|
||||
.exec(db)
|
||||
.on_conflict(
|
||||
OnConflict::columns([
|
||||
subscription_bangumi::Column::SubscriptionId,
|
||||
subscription_bangumi::Column::BangumiId,
|
||||
])
|
||||
.do_nothing()
|
||||
.to_owned(),
|
||||
)
|
||||
.exec_without_returning(db)
|
||||
.await?;
|
||||
}
|
||||
Ok(new_bangumi_model)
|
||||
|
||||
@@ -224,6 +224,10 @@ impl Model {
|
||||
})
|
||||
.collect::<Result<_, _>>()?;
|
||||
|
||||
if new_episode_active_modes.is_empty() {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let new_episode_ids = Entity::insert_many(new_episode_active_modes)
|
||||
.on_conflict(
|
||||
OnConflict::columns([Column::MikanEpisodeId, Column::SubscriberId])
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use async_trait::async_trait;
|
||||
use sea_orm::{ActiveValue, entity::prelude::*};
|
||||
use sea_orm::{ActiveValue, entity::prelude::*, sea_query::OnConflict};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::{app::AppContextTrait, errors::RecorderResult};
|
||||
@@ -96,15 +96,29 @@ impl Model {
|
||||
subscription_id: i32,
|
||||
) -> RecorderResult<()> {
|
||||
let db = ctx.db();
|
||||
Entity::insert_many(bangumi_ids.map(|bangumi_id| ActiveModel {
|
||||
bangumi_id: ActiveValue::Set(bangumi_id),
|
||||
subscriber_id: ActiveValue::Set(subscriber_id),
|
||||
subscription_id: ActiveValue::Set(subscription_id),
|
||||
..Default::default()
|
||||
}))
|
||||
.on_conflict_do_nothing()
|
||||
.exec(db)
|
||||
.await?;
|
||||
|
||||
let active_models = bangumi_ids
|
||||
.map(|bangumi_id| {
|
||||
ActiveModel::from_subscription_and_bangumi(
|
||||
subscriber_id,
|
||||
subscription_id,
|
||||
bangumi_id,
|
||||
)
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
if active_models.is_empty() {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
Entity::insert_many(active_models)
|
||||
.on_conflict(
|
||||
OnConflict::columns([Column::SubscriptionId, Column::BangumiId])
|
||||
.do_nothing()
|
||||
.to_owned(),
|
||||
)
|
||||
.exec_without_returning(db)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use async_trait::async_trait;
|
||||
use sea_orm::{ActiveValue, entity::prelude::*};
|
||||
use sea_orm::{ActiveValue, entity::prelude::*, sea_query::OnConflict};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::{app::AppContextTrait, errors::RecorderResult};
|
||||
@@ -81,15 +81,28 @@ impl Model {
|
||||
subscription_id: i32,
|
||||
) -> RecorderResult<()> {
|
||||
let db = ctx.db();
|
||||
Entity::insert_many(episode_ids.map(|episode_id| ActiveModel {
|
||||
episode_id: ActiveValue::Set(episode_id),
|
||||
subscription_id: ActiveValue::Set(subscription_id),
|
||||
subscriber_id: ActiveValue::Set(subscriber_id),
|
||||
..Default::default()
|
||||
}))
|
||||
.on_conflict_do_nothing()
|
||||
.exec(db)
|
||||
.await?;
|
||||
|
||||
let active_models = episode_ids
|
||||
.map(|episode_id| ActiveModel {
|
||||
episode_id: ActiveValue::Set(episode_id),
|
||||
subscription_id: ActiveValue::Set(subscription_id),
|
||||
subscriber_id: ActiveValue::Set(subscriber_id),
|
||||
..Default::default()
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
if active_models.is_empty() {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
Entity::insert_many(active_models)
|
||||
.on_conflict(
|
||||
OnConflict::columns([Column::SubscriptionId, Column::EpisodeId])
|
||||
.do_nothing()
|
||||
.to_owned(),
|
||||
)
|
||||
.exec_without_returning(db)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user