From 5b5d1265cf336723750fa312ec5f624e77acd9a4 Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sat, 6 Dec 2025 22:17:42 -0800 Subject: [PATCH] fix: add query indexes --- convex/admin.ts | 2 +- convex/builds.ts | 6 +++--- convex/profiles.ts | 4 ++-- convex/schema.ts | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/convex/admin.ts b/convex/admin.ts index 44d29ef..e783ae3 100644 --- a/convex/admin.ts +++ b/convex/admin.ts @@ -25,7 +25,7 @@ export const listFailedBuilds = adminQuery({ handler: async ctx => { const failedBuilds = await ctx.db .query("builds") - .filter(q => q.eq(q.field("status"), "failure")) + .withIndex("by_status", q => q.eq("status", "failure")) .order("desc") .collect() diff --git a/convex/builds.ts b/convex/builds.ts index af93bce..f0bf69c 100644 --- a/convex/builds.ts +++ b/convex/builds.ts @@ -28,7 +28,7 @@ export const getByHash = query({ handler: async (ctx, args) => { const build = await ctx.db .query("builds") - .filter(q => q.eq(q.field("buildHash"), args.buildHash)) + .withIndex("by_buildHash", q => q.eq("buildHash", args.buildHash)) .unique() return build ?? null }, @@ -146,7 +146,7 @@ export const upsertBuild = internalMutation({ // Check if build already exists with this hash const existingBuild = await ctx.db .query("builds") - .filter(q => q.eq(q.field("buildHash"), args.buildHash)) + .withIndex("by_buildHash", q => q.eq("buildHash", args.buildHash)) .unique() const { status, buildHash, config, flags } = args @@ -205,7 +205,7 @@ export const ensureBuildFromConfig = mutation({ const existingBuild = await ctx.db .query("builds") - .filter(q => q.eq(q.field("buildHash"), buildHash)) + .withIndex("by_buildHash", q => q.eq("buildHash", buildHash)) .unique() if (existingBuild) { diff --git a/convex/profiles.ts b/convex/profiles.ts index 109558e..35a49c3 100644 --- a/convex/profiles.ts +++ b/convex/profiles.ts @@ -11,7 +11,7 @@ export const list = query({ return await ctx.db .query("profiles") - .filter(q => q.eq(q.field("userId"), userId)) + .withIndex("by_userId", q => q.eq("userId", userId)) .collect() }, }) @@ -21,7 +21,7 @@ export const listPublic = query({ handler: async ctx => { const allProfiles = await ctx.db .query("profiles") - .filter(q => q.eq(q.field("isPublic"), true)) + .withIndex("by_isPublic", q => q.eq("isPublic", true)) .collect() return allProfiles.sort((a, b) => (b.flashCount ?? 0) - (a.flashCount ?? 0)) }, diff --git a/convex/schema.ts b/convex/schema.ts index a72c4dd..5afb3da 100644 --- a/convex/schema.ts +++ b/convex/schema.ts @@ -49,8 +49,8 @@ export const userSettingsFields = { export const schema = defineSchema({ ...authTables, - profiles: defineTable(profileFields), - builds: defineTable(buildFields), + profiles: defineTable(profileFields).index("by_userId", ["userId"]).index("by_isPublic", ["isPublic"]), + builds: defineTable(buildFields).index("by_buildHash", ["buildHash"]).index("by_status", ["status"]), plugins: defineTable(pluginFields).index("by_slug", ["slug"]), userSettings: defineTable(userSettingsFields).index("by_user", ["userId"]), })