Files
xarticleaudio/convex/state.ts

46 lines
940 B
TypeScript

import { mutation, query } from "./_generated/server";
import { v } from "convex/values";
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();
if (latest) {
await ctx.db.patch(latest._id, {
snapshot: args.snapshot,
updatedAt: args.updatedAt,
});
return latest._id;
}
return ctx.db.insert("state_snapshots", {
snapshot: args.snapshot,
updatedAt: args.updatedAt,
});
},
});