@@ -300,23 +300,61 @@ export const clearUpdates = async (): Promise<void> => {
300300// #endregion
301301// #region Selectors
302302
303- export const getCustomPages = async ( novelId : number ) => {
304- return await dbManager
305- . selectDistinct ( { page : chapterSchema . page } )
306- . from ( chapterSchema )
307- . where ( eq ( chapterSchema . novelId , novelId ) )
308- . orderBy ( asc ( castInt ( chapterSchema . page ) ) )
309- . all ( ) ;
303+ export const getCustomPages = ( novelId : number ) => {
304+ return dbManager . allSync (
305+ dbManager
306+ . selectDistinct ( { page : chapterSchema . page } )
307+ . from ( chapterSchema )
308+ . where ( eq ( chapterSchema . novelId , novelId ) )
309+ . orderBy ( asc ( castInt ( chapterSchema . page ) ) ) ,
310+ ) ;
310311} ;
311312
312313export const getNovelChapters = async (
313314 novelId : number ,
315+ sort ?: ChapterOrderKey ,
316+ filter ?: ChapterFilterKey [ ] ,
317+ page ?: string ,
318+ limit : number = 1000 ,
314319) : Promise < ChapterInfo [ ] > =>
315320 dbManager
316321 . select ( )
317322 . from ( chapterSchema )
318- . where ( eq ( chapterSchema . novelId , novelId ) ) ;
323+ . where (
324+ and (
325+ eq ( chapterSchema . novelId , novelId ) ,
326+ ! page ? sql . raw ( 'true' ) : eq ( chapterSchema . page , page ) ,
327+ chapterFilterToSQL ( filter ) ,
328+ ) ,
329+ )
330+ . orderBy ( chapterOrderToSQL ( sort ) )
331+ . limit ( limit )
332+ . all ( ) ;
319333
334+ export const getNovelChaptersSync = (
335+ novelId : number ,
336+ sort ?: ChapterOrderKey ,
337+ filter ?: ChapterFilterKey [ ] ,
338+ page ?: string ,
339+ limit : number = 1000 ,
340+ ) : ChapterInfo [ ] =>
341+ dbManager . allSync (
342+ dbManager
343+ . select ( )
344+ . from ( chapterSchema )
345+ . where (
346+ and (
347+ eq ( chapterSchema . novelId , novelId ) ,
348+ ! page ? sql . raw ( 'true' ) : eq ( chapterSchema . page , page ) ,
349+ chapterFilterToSQL ( filter ) ,
350+ ) ,
351+ )
352+ . orderBy ( chapterOrderToSQL ( sort ) )
353+ . limit ( limit ) , // Adding a limit to prevent potential performance issues with large datasets
354+ ) ;
355+ /**
356+ * @deprecated , use getNovelChapters with whereConditions instead
357+ */
320358export const getUnreadNovelChapters = async (
321359 novelId : number ,
322360) : Promise < ChapterInfo [ ] > =>
@@ -326,7 +364,9 @@ export const getUnreadNovelChapters = async (
326364 . where (
327365 and ( eq ( chapterSchema . novelId , novelId ) , eq ( chapterSchema . unread , true ) ) ,
328366 ) ;
329-
367+ /**
368+ * @deprecated , use getNovelChapters with whereConditions instead
369+ */
330370export const getAllUndownloadedChapters = async (
331371 novelId : number ,
332372) : Promise < ChapterInfo [ ] > =>
@@ -339,7 +379,9 @@ export const getAllUndownloadedChapters = async (
339379 eq ( chapterSchema . isDownloaded , false ) ,
340380 ) ,
341381 ) ;
342-
382+ /**
383+ * @deprecated , use getNovelChapters with whereConditions instead
384+ */
343385export const getAllUndownloadedAndUnreadChapters = async (
344386 novelId : number ,
345387) : Promise < ChapterInfo [ ] > =>
@@ -408,8 +450,8 @@ export const getPageChaptersBatched = async (
408450 page ?: string ,
409451 batch : number = 0 ,
410452) => {
411- const limit = 300 ;
412- const offset = 300 * batch ;
453+ const limit = 1000 ;
454+ const offset = 1000 * batch ;
413455 const query = dbManager
414456 . select ( )
415457 . from ( chapterSchema )
@@ -451,20 +493,21 @@ export const getFirstUnreadChapter = (
451493 filter ?: ChapterFilterKey [ ] ,
452494 page ?: string ,
453495) =>
454- dbManager
455- . select ( )
456- . from ( chapterSchema )
457- . where (
458- and (
459- eq ( chapterSchema . novelId , novelId ) ,
460- eq ( chapterSchema . page , page || '1' ) ,
461- eq ( chapterSchema . unread , true ) ,
462- chapterFilterToSQL ( filter ) ,
463- ) ,
464- )
465- . orderBy ( asc ( chapterSchema . position ) )
466- . limit ( 1 )
467- . get ( ) ;
496+ dbManager . getSync (
497+ dbManager
498+ . select ( )
499+ . from ( chapterSchema )
500+ . where (
501+ and (
502+ eq ( chapterSchema . novelId , novelId ) ,
503+ eq ( chapterSchema . page , page || '1' ) ,
504+ eq ( chapterSchema . unread , true ) ,
505+ chapterFilterToSQL ( filter ) ,
506+ ) ,
507+ )
508+ . orderBy ( asc ( chapterSchema . position ) )
509+ . limit ( 1 ) ,
510+ ) ;
468511
469512export const getNovelChaptersByName = async (
470513 novelId : number ,
0 commit comments