diff options
| author | nsfisis <54318333+nsfisis@users.noreply.github.com> | 2026-02-08 21:24:08 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-08 21:24:08 +0900 |
| commit | c0d092b3bfef491d9aa02a4e7e8f503ea35e6420 (patch) | |
| tree | ac2e447cc7a2e568187a414c241258adf009c1d5 /src/server | |
| parent | 5e7c3ad7ed8c287b538de97d4de3a4df87e9a100 (diff) | |
| parent | 6d53e63d9f3fd81125d0f61e9701ecd262318875 (diff) | |
| download | kioku-c0d092b3bfef491d9aa02a4e7e8f503ea35e6420.tar.gz kioku-c0d092b3bfef491d9aa02a4e7e8f503ea35e6420.tar.zst kioku-c0d092b3bfef491d9aa02a4e7e8f503ea35e6420.zip | |
Merge pull request #13 from nsfisis/claude/clarify-deck-numbers-mg3d4
Simplify deck stats to show due card count from server
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/routes/decks.ts | 18 | ||||
| -rw-r--r-- | src/server/routes/study.test.ts | 2 | ||||
| -rw-r--r-- | src/server/routes/study.ts | 2 |
3 files changed, 18 insertions, 4 deletions
diff --git a/src/server/routes/decks.ts b/src/server/routes/decks.ts index 6a24c66..d73aa0c 100644 --- a/src/server/routes/decks.ts +++ b/src/server/routes/decks.ts @@ -22,7 +22,7 @@ const deckIdParamSchema = z.object({ id: z.uuid(), }); -const REVIEW_CARDS_LIMIT = 100; +const REVIEW_CARDS_LIMIT = 80; export function createDecksRouter(deps: DeckDependencies) { const { deckRepo, cardRepo, reviewLogRepo } = deps; @@ -82,7 +82,21 @@ export function createDecksRouter(deps: DeckDependencies) { throw Errors.notFound("Deck not found", "DECK_NOT_FOUND"); } - return c.json({ deck }, 200); + const now = new Date(); + const [dueNewCards, dueReviewCards, reviewedNewCards] = await Promise.all( + [ + cardRepo.countDueNewCards(deck.id, now), + cardRepo.countDueReviewCards(deck.id, now), + reviewLogRepo.countTodayNewCardReviews(deck.id, now), + ], + ); + + const newCardBudget = Math.max(0, deck.newCardsPerDay - reviewedNewCards); + const newCardsToStudy = Math.min(dueNewCards, newCardBudget); + const reviewCardsToStudy = Math.min(dueReviewCards, REVIEW_CARDS_LIMIT); + const dueCardCount = newCardsToStudy + reviewCardsToStudy; + + return c.json({ deck: { ...deck, dueCardCount } }, 200); }) .put( "/:id", diff --git a/src/server/routes/study.test.ts b/src/server/routes/study.test.ts index a58ea0d..514d966 100644 --- a/src/server/routes/study.test.ts +++ b/src/server/routes/study.test.ts @@ -198,7 +198,7 @@ describe("GET /api/decks/:deckId/study", () => { expect(mockCardRepo.findDueReviewCardsForStudy).toHaveBeenCalledWith( DECK_ID, expect.any(Date), - 100, + 80, ); }); diff --git a/src/server/routes/study.ts b/src/server/routes/study.ts index efd450c..d05f3ca 100644 --- a/src/server/routes/study.ts +++ b/src/server/routes/study.ts @@ -62,7 +62,7 @@ export function createStudyRouter(deps: StudyDependencies) { // Fetch new cards (limited) and review cards separately const [newCards, reviewCards] = await Promise.all([ cardRepo.findDueNewCardsForStudy(deckId, now, newCardBudget), - cardRepo.findDueReviewCardsForStudy(deckId, now, 100), + cardRepo.findDueReviewCardsForStudy(deckId, now, 80), ]); return c.json({ cards: [...newCards, ...reviewCards] }, 200); |
