feat: add reset deck progress feature for deck detail page

This commit is contained in:
2026-03-13 22:02:55 +08:00
parent 279eee2953
commit af684a15ce
17 changed files with 575 additions and 82 deletions

View File

@@ -7,9 +7,11 @@ import {
RepoInputGetCardsForReview,
RepoInputGetNewCards,
RepoInputBulkUpdateCards,
RepoInputResetDeckCards,
RepoOutputCard,
RepoOutputCardWithNote,
RepoOutputCardStats,
RepoOutputResetDeckCards,
} from "./card-repository-dto";
import { CardType, CardQueue } from "../../../generated/prisma/enums";
@@ -307,3 +309,29 @@ export async function repoGetCardsByNoteId(noteId: bigint): Promise<RepoOutputCa
});
return cards;
}
export async function repoResetDeckCards(
input: RepoInputResetDeckCards,
): Promise<RepoOutputResetDeckCards> {
log.debug("Resetting deck cards", { deckId: input.deckId });
const result = await prisma.card.updateMany({
where: { deckId: input.deckId },
data: {
type: CardType.NEW,
queue: CardQueue.NEW,
due: 0,
ivl: 0,
factor: 2500,
reps: 0,
lapses: 0,
left: 0,
odue: 0,
odid: 0,
mod: Math.floor(Date.now() / 1000),
},
});
log.info("Deck cards reset", { deckId: input.deckId, count: result.count });
return { count: result.count };
}