From c432a282a75662f7d0440801a8e8f04663d8d04a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=B4=80=E1=B4=8D=E1=B4=9B=E1=B4=8F=E1=B4=80=E1=B4=87?= =?UTF-8?q?=CA=80?= Date: Sat, 3 Aug 2024 23:49:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=A7=86=E9=A2=91=20p?= =?UTF-8?q?age=20=E8=BF=87=E5=A4=9A=E6=97=B6=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20(#162)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/bili_sync/src/adapter/helper/mod.rs | 24 ++++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/crates/bili_sync/src/adapter/helper/mod.rs b/crates/bili_sync/src/adapter/helper/mod.rs index 56de789..df0891b 100644 --- a/crates/bili_sync/src/adapter/helper/mod.rs +++ b/crates/bili_sync/src/adapter/helper/mod.rs @@ -6,7 +6,7 @@ use bili_sync_entity::*; use sea_orm::entity::prelude::*; use sea_orm::sea_query::{OnConflict, SimpleExpr}; use sea_orm::ActiveValue::Set; -use sea_orm::{Condition, QuerySelect}; +use sea_orm::{Condition, DatabaseTransaction, QuerySelect}; use crate::bilibili::{BiliError, PageInfo, VideoInfo}; use crate::config::TEMPLATE; @@ -99,7 +99,7 @@ pub(super) async fn error_fetch_video_detail( pub(crate) async fn create_video_pages( pages_info: &[PageInfo], video_model: &video::Model, - connection: &impl ConnectionTrait, + connection: &DatabaseTransaction, ) -> Result<()> { let page_models = pages_info .iter() @@ -128,14 +128,16 @@ pub(crate) async fn create_video_pages( } }) .collect::>(); - page::Entity::insert_many(page_models) - .on_conflict( - OnConflict::columns([page::Column::VideoId, page::Column::Pid]) - .do_nothing() - .to_owned(), - ) - .do_nothing() - .exec(connection) - .await?; + for page_chunk in page_models.chunks(50) { + page::Entity::insert_many(page_chunk.to_vec()) + .on_conflict( + OnConflict::columns([page::Column::VideoId, page::Column::Pid]) + .do_nothing() + .to_owned(), + ) + .do_nothing() + .exec(connection) + .await?; + } Ok(()) }