aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/server/repositories/review-log.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/repositories/review-log.ts')
-rw-r--r--src/server/repositories/review-log.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/server/repositories/review-log.ts b/src/server/repositories/review-log.ts
new file mode 100644
index 0000000..c8950d6
--- /dev/null
+++ b/src/server/repositories/review-log.ts
@@ -0,0 +1,32 @@
+import { db } from "../db/index.js";
+import { reviewLogs } from "../db/schema.js";
+import type { ReviewLog, ReviewLogRepository } from "./types.js";
+
+export const reviewLogRepository: ReviewLogRepository = {
+ async create(data: {
+ cardId: string;
+ userId: string;
+ rating: number;
+ state: number;
+ scheduledDays: number;
+ elapsedDays: number;
+ durationMs?: number | null;
+ }): Promise<ReviewLog> {
+ const [reviewLog] = await db
+ .insert(reviewLogs)
+ .values({
+ cardId: data.cardId,
+ userId: data.userId,
+ rating: data.rating,
+ state: data.state,
+ scheduledDays: data.scheduledDays,
+ elapsedDays: data.elapsedDays,
+ durationMs: data.durationMs ?? null,
+ })
+ .returning();
+ if (!reviewLog) {
+ throw new Error("Failed to create review log");
+ }
+ return reviewLog;
+ },
+};