Skip to main content
Glama
query_index.ts1.78 kB
import { DatabaseReader, query } from "./_generated/server"; import { Id } from "./_generated/dataModel"; import { CACHE_BREAKER_ARGS, MessagesTable } from "./common"; import { v } from "convex/values"; export const queryMessages = query({ args: CACHE_BREAKER_ARGS, handler: async ({ db }, { cacheBreaker }) => { // Query at a random offset in order to uniformly distributed queries that // don't hit the cache. return await queryMessagesHelper( db, "global", cacheBreaker, 10, "messages", ); }, }); export const queryMessagesWithSearch = query({ args: CACHE_BREAKER_ARGS, handler: async ({ db }, { cacheBreaker }) => { // Query at a random offset in order to uniformly distributed queries that // don't hit the cache. return await queryMessagesHelper( db, "global", cacheBreaker, 10, "messages_with_search", ); }, }); export const queryMessagesWithArgs = query({ args: { channel: v.string(), rand: v.number(), limit: v.number(), table: v.union(v.literal("messages"), v.literal("messages_with_search")), }, handler: async ({ db }, { channel, rand, limit, table }) => { return await queryMessagesHelper(db, channel, rand, limit, table); }, }); function queryMessagesHelper( db: DatabaseReader, channel: string, rand: number, limit: number, table: MessagesTable, ) { return db .query(table) .withIndex("by_channel_rand", (q) => q.eq("channel", channel).gte("rand", rand), ) .take(limit); } export const queryMessagesById = query({ args: { id: v.union(v.id("messages"), v.id("messages_with_search")), }, handler: async ({ db }, { id }) => { return await db.get(id satisfies Id<MessagesTable>); }, });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/get-convex/convex-backend'

If you have feedback or need assistance with the MCP directory API, please join our Discord server