import { mutation, query } from "./_generated/server"; import { v } from "convex/values"; import { syncFromEngineSnapshot } from "./domain"; export const getLatestSnapshot = query({ args: {}, handler: async (ctx) => { const latest = await ctx.db .query("state_snapshots") .order("desc") .first(); return latest ? { snapshot: latest.snapshot, updatedAt: latest.updatedAt, } : null; }, }); export const saveSnapshot = mutation({ args: { snapshot: v.any(), updatedAt: v.string(), }, handler: async (ctx, args) => { const latest = await ctx.db .query("state_snapshots") .order("desc") .first(); const syncSummary = await syncFromEngineSnapshot(ctx, args.snapshot); if (latest) { await ctx.db.patch(latest._id, { snapshot: args.snapshot, updatedAt: args.updatedAt, }); return { snapshotId: latest._id, syncSummary, }; } const snapshotId = await ctx.db.insert("state_snapshots", { snapshot: args.snapshot, updatedAt: args.updatedAt, }); return { snapshotId, syncSummary, }; }, });