From 537cf48fb4f739733f5a9a023ffbb70fce1c6856 Mon Sep 17 00:00:00 2001 From: CD-Z Date: Sun, 4 May 2025 09:49:36 +0200 Subject: [PATCH] fix chapter insert --- src/database/queries/ChapterQueries.ts | 47 ++++++++++++-------------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/src/database/queries/ChapterQueries.ts b/src/database/queries/ChapterQueries.ts index 702078a9..1810532a 100644 --- a/src/database/queries/ChapterQueries.ts +++ b/src/database/queries/ChapterQueries.ts @@ -20,33 +20,30 @@ export const insertChapters = async ( await db .withTransactionAsync(async () => { - // 2604.029053 ms AllNovelFull Martial God Asura | 6192chs | synchronous = NORMAL - // 1261.847900 ms AllNovelFull Martial God Asura | 6192chs | synchronous = OFF - // 1008.902832 ms AllNovelFull Martial God Asura | 6192chs | synchronous = OFF & UPSERT syntax - - const statement = await db.prepareAsync(` + const statement = db.prepareSync(` INSERT INTO Chapter (path, name, releaseTime, novelId, chapterNumber, page, position) - VALUES (?, ?, ?, ?, ?, ?, ?) + VALUES (?, ?, ?, ${novelId}, ?, ?, ?) ON CONFLICT(path, novelId) DO UPDATE SET - page = excluded.page, - position = excluded.position, - name = excluded.name, - releaseTime = excluded.releaseTime, - chapterNumber = excluded.chapterNumber; - `); - const promises = chapters.map((chapter, index) => - statement.executeAsync( - chapter.path, - chapter.name, - chapter.releaseTime || '', - novelId, - chapter.chapterNumber || null, - chapter.page || '1', - index, - ), - ); - await Promise.all(promises); - await statement.finalizeAsync(); + page = excluded.page, + position = excluded.position, + name = excluded.name, + releaseTime = excluded.releaseTime, + chapterNumber = excluded.chapterNumber; + `); + try { + chapters.map((chapter, index) => + statement.executeSync( + chapter.path, + chapter.name ?? 'Chapter ' + (index + 1), + chapter.releaseTime || '', + chapter.chapterNumber || null, + chapter.page || '1', + index, + ), + ); + } finally { + statement.finalizeSync(); + } }) .catch(e => { console.error(e);