aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/server/routes/decks.ts
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-02-12 14:54:18 +0000
committerClaude <noreply@anthropic.com>2026-02-12 14:54:18 +0000
commit1afb825860cd293b8065d51746f4b23e4e8dab5d (patch)
tree1fe3a43f1c7ab469bb0154a1495028cc42b414a0 /src/server/routes/decks.ts
parent9a52e7ad3b2d46c523caf079794fdb7757375b91 (diff)
downloadkioku-1afb825860cd293b8065d51746f4b23e4e8dab5d.tar.gz
kioku-1afb825860cd293b8065d51746f4b23e4e8dab5d.tar.zst
kioku-1afb825860cd293b8065d51746f4b23e4e8dab5d.zip
feat: 学習カード数の上限を撤廃
REVIEW_CARDS_LIMIT(復習カード80枚制限)とnewCardsPerDay(1日の新規カード制限) を削除し、期日が来たすべてのカードを制限なく返すように変更。 削除した主な要素: - REVIEW_CARDS_LIMIT定数とカード取得時のlimitパラメータ - newCardsPerDayフィールド(DB schema, 型定義, Zod schema, sync, CRDT) - countDueNewCards, countDueReviewCards, findDueNewCardsForStudy, findDueReviewCardsForStudy(CardRepository) - countTodayNewCardReviews(ReviewLogRepository) - デッキルートからのReviewLogRepository依存 https://claude.ai/code/session_018hrEJ9vg3RPoeAPyEc17gS
Diffstat (limited to 'src/server/routes/decks.ts')
-rw-r--r--src/server/routes/decks.ts43
1 files changed, 3 insertions, 40 deletions
diff --git a/src/server/routes/decks.ts b/src/server/routes/decks.ts
index d73aa0c..ed7077e 100644
--- a/src/server/routes/decks.ts
+++ b/src/server/routes/decks.ts
@@ -7,25 +7,20 @@ import {
cardRepository,
type DeckRepository,
deckRepository,
- type ReviewLogRepository,
- reviewLogRepository,
} from "../repositories/index.js";
import { createDeckSchema, updateDeckSchema } from "../schemas/index.js";
export interface DeckDependencies {
deckRepo: DeckRepository;
cardRepo: CardRepository;
- reviewLogRepo: ReviewLogRepository;
}
const deckIdParamSchema = z.object({
id: z.uuid(),
});
-const REVIEW_CARDS_LIMIT = 80;
-
export function createDecksRouter(deps: DeckDependencies) {
- const { deckRepo, cardRepo, reviewLogRepo } = deps;
+ const { deckRepo, cardRepo } = deps;
return new Hono()
.use("*", authMiddleware)
@@ -35,26 +30,7 @@ export function createDecksRouter(deps: DeckDependencies) {
const now = new Date();
const decksWithDueCount = await Promise.all(
decks.map(async (deck) => {
- const [dueNewCards, dueReviewCards, reviewedNewCards] =
- await Promise.all([
- cardRepo.countDueNewCards(deck.id, now),
- cardRepo.countDueReviewCards(deck.id, now),
- reviewLogRepo.countTodayNewCardReviews(deck.id, now),
- ]);
-
- // Apply the same limits as the study screen
- 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;
-
+ const dueCardCount = await cardRepo.countDueCards(deck.id, now);
return { ...deck, dueCardCount };
}),
);
@@ -68,7 +44,6 @@ export function createDecksRouter(deps: DeckDependencies) {
userId: user.id,
name: data.name,
description: data.description,
- newCardsPerDay: data.newCardsPerDay,
});
return c.json({ deck }, 201);
@@ -83,18 +58,7 @@ export function createDecksRouter(deps: DeckDependencies) {
}
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;
+ const dueCardCount = await cardRepo.countDueCards(deck.id, now);
return c.json({ deck: { ...deck, dueCardCount } }, 200);
})
@@ -131,5 +95,4 @@ export function createDecksRouter(deps: DeckDependencies) {
export const decks = createDecksRouter({
deckRepo: deckRepository,
cardRepo: cardRepository,
- reviewLogRepo: reviewLogRepository,
});