import { v } from "convex/values" import { internalMutation, query } from "./_generated/server" export const get = query({ args: { slug: v.string() }, handler: async (ctx, args) => { const plugin = await ctx.db .query("plugins") .withIndex("by_slug", q => q.eq("slug", args.slug)) .unique() return plugin ? { slug: plugin.slug, flashCount: plugin.flashCount } : { slug: args.slug, flashCount: 0 } }, }) export const getAll = query({ args: {}, handler: async ctx => { const plugins = await ctx.db.query("plugins").collect() const counts: Record = {} for (const plugin of plugins) { counts[plugin.slug] = plugin.flashCount } return counts }, }) export const incrementFlashCount = internalMutation({ args: { slugs: v.array(v.string()) }, handler: async (ctx, args) => { for (const pluginSpec of args.slugs) { // Extract slug from "slug@version" format, or use as-is if no @ present const slug = pluginSpec.split("@")[0] const existing = await ctx.db .query("plugins") .withIndex("by_slug", q => q.eq("slug", slug)) .unique() if (existing) { await ctx.db.patch(existing._id, { flashCount: existing.flashCount + 1, updatedAt: Date.now(), }) } else { await ctx.db.insert("plugins", { slug, flashCount: 1, updatedAt: Date.now(), }) } } }, })