diff options
Diffstat (limited to 'src/server/repositories')
| -rw-r--r-- | src/server/repositories/card.test.ts | 2 | ||||
| -rw-r--r-- | src/server/repositories/card.ts | 32 | ||||
| -rw-r--r-- | src/server/repositories/types.ts | 2 |
3 files changed, 36 insertions, 0 deletions
diff --git a/src/server/repositories/card.test.ts b/src/server/repositories/card.test.ts index 1ed31c7..21e5485 100644 --- a/src/server/repositories/card.test.ts +++ b/src/server/repositories/card.test.ts @@ -112,6 +112,8 @@ function createMockCardRepo(): CardRepository { softDeleteByNoteId: vi.fn(), findDueCards: vi.fn(), countDueCards: vi.fn(), + countDueNewCards: vi.fn(), + countDueReviewCards: vi.fn(), findDueCardsWithNoteData: vi.fn(), findDueCardsForStudy: vi.fn(), findDueNewCardsForStudy: vi.fn(), diff --git a/src/server/repositories/card.ts b/src/server/repositories/card.ts index f546922..d382f4d 100644 --- a/src/server/repositories/card.ts +++ b/src/server/repositories/card.ts @@ -221,6 +221,38 @@ export const cardRepository: CardRepository = { return result[0]?.count ?? 0; }, + async countDueNewCards(deckId: string, now: Date): Promise<number> { + const boundary = getEndOfStudyDayBoundary(now); + const result = await db + .select({ count: sql<number>`count(*)::int` }) + .from(cards) + .where( + and( + eq(cards.deckId, deckId), + isNull(cards.deletedAt), + lt(cards.due, boundary), + eq(cards.state, CardState.New), + ), + ); + return result[0]?.count ?? 0; + }, + + async countDueReviewCards(deckId: string, now: Date): Promise<number> { + const boundary = getEndOfStudyDayBoundary(now); + const result = await db + .select({ count: sql<number>`count(*)::int` }) + .from(cards) + .where( + and( + eq(cards.deckId, deckId), + isNull(cards.deletedAt), + lt(cards.due, boundary), + ne(cards.state, CardState.New), + ), + ); + return result[0]?.count ?? 0; + }, + async findDueCardsWithNoteData( deckId: string, now: Date, diff --git a/src/server/repositories/types.ts b/src/server/repositories/types.ts index 47fb68f..4042daf 100644 --- a/src/server/repositories/types.ts +++ b/src/server/repositories/types.ts @@ -168,6 +168,8 @@ export interface CardRepository { now: Date, limit: number, ): Promise<CardForStudy[]>; + countDueNewCards(deckId: string, now: Date): Promise<number>; + countDueReviewCards(deckId: string, now: Date): Promise<number>; updateFSRSFields( id: string, deckId: string, |
