import { v } from "convex/values"; import { query, mutation } from "./_generated/server"; // Get recent scan history export const getRecent = query({ args: { userId: v.id("users"), limit: v.optional(v.number()) }, handler: async (ctx, { userId, limit = 50 }) => { const history = await ctx.db .query("scanHistory") .withIndex("by_user", (q) => q.eq("userId", userId)) .order("desc") .take(limit); // Enrich with card data const enriched = await Promise.all( history.map(async (entry) => { const card = entry.cardId ? await ctx.db.get(entry.cardId) : null; return { ...entry, card, }; }) ); return enriched; }, }); // Record a scan export const record = mutation({ args: { userId: v.id("users"), cardId: v.optional(v.id("cards")), confidence: v.number(), addedToCollection: v.boolean(), }, handler: async (ctx, args) => { return await ctx.db.insert("scanHistory", { ...args, scannedAt: Date.now(), }); }, }); // Clear scan history export const clear = mutation({ args: { userId: v.id("users") }, handler: async (ctx, { userId }) => { const entries = await ctx.db .query("scanHistory") .withIndex("by_user", (q) => q.eq("userId", userId)) .collect(); for (const entry of entries) { await ctx.db.delete(entry._id); } }, });