diff options
| author | nsfisis <54318333+nsfisis@users.noreply.github.com> | 2026-01-12 18:09:14 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-12 18:09:14 +0900 |
| commit | 188c49e6ae0dfa0af052a001bc40c26d448b1583 (patch) | |
| tree | f0cebd927c2292a40f123a694c6aa561768ad7a3 /src/server/routes/decks.ts | |
| parent | f8e4be9b36a16969ac53bd9ce12ce8064be10196 (diff) | |
| parent | 1732c543f4bc98ec6a4c7ea13c3e4762933421d8 (diff) | |
| download | kioku-188c49e6ae0dfa0af052a001bc40c26d448b1583.tar.gz kioku-188c49e6ae0dfa0af052a001bc40c26d448b1583.tar.zst kioku-188c49e6ae0dfa0af052a001bc40c26d448b1583.zip | |
Display daily card count on deck list page
Diffstat (limited to 'src/server/routes/decks.ts')
| -rw-r--r-- | src/server/routes/decks.ts | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/server/routes/decks.ts b/src/server/routes/decks.ts index 2450bcd..2e170db 100644 --- a/src/server/routes/decks.ts +++ b/src/server/routes/decks.ts @@ -2,11 +2,17 @@ import { zValidator } from "@hono/zod-validator"; import { Hono } from "hono"; import { z } from "zod"; import { authMiddleware, Errors, getAuthUser } from "../middleware/index.js"; -import { type DeckRepository, deckRepository } from "../repositories/index.js"; +import { + type CardRepository, + cardRepository, + type DeckRepository, + deckRepository, +} from "../repositories/index.js"; import { createDeckSchema, updateDeckSchema } from "../schemas/index.js"; export interface DeckDependencies { deckRepo: DeckRepository; + cardRepo: CardRepository; } const deckIdParamSchema = z.object({ @@ -14,14 +20,21 @@ const deckIdParamSchema = z.object({ }); export function createDecksRouter(deps: DeckDependencies) { - const { deckRepo } = deps; + const { deckRepo, cardRepo } = deps; return new Hono() .use("*", authMiddleware) .get("/", async (c) => { const user = getAuthUser(c); const decks = await deckRepo.findByUserId(user.id); - return c.json({ decks }, 200); + const now = new Date(); + const decksWithDueCount = await Promise.all( + decks.map(async (deck) => { + const dueCardCount = await cardRepo.countDueCards(deck.id, now); + return { ...deck, dueCardCount }; + }), + ); + return c.json({ decks: decksWithDueCount }, 200); }) .post("/", zValidator("json", createDeckSchema), async (c) => { const user = getAuthUser(c); @@ -79,4 +92,5 @@ export function createDecksRouter(deps: DeckDependencies) { export const decks = createDecksRouter({ deckRepo: deckRepository, + cardRepo: cardRepository, }); |
