Skip to main content
Glama

Convex MCP server

Official
by get-convex
paginatedDeploymentEvents.ts1.76 kB
import { paginationOptsValidator } from "convex/server"; import { queryPrivateSystem } from "../secretSystemTables"; import { v } from "convex/values"; import { maximumBytesRead, maximumRowsRead } from "../paginationLimits"; /** * Paginated query for the deployment events from most recent to least recent */ export default queryPrivateSystem({ args: { paginationOpts: paginationOptsValidator, filters: v.object({ minDate: v.number(), maxDate: v.optional(v.number()), authorMemberIds: v.optional(v.array(v.int64())), actions: v.optional(v.array(v.string())), }), }, handler: async function ({ db }, { paginationOpts, filters }) { const paginatedResults = await db .query("_deployment_audit_log") .withIndex("by_creation_time", (q) => { const partial = q.gte("_creationTime", filters.minDate); return filters.maxDate ? partial.lte("_creationTime", filters.maxDate) : partial; }) .order("desc") .filter((q) => { const queryFilters = []; if (filters.authorMemberIds !== undefined) { queryFilters.push( q.or( ...filters.authorMemberIds.map((memberId) => q.eq(memberId, q.field("member_id")), ), ), ); } if (filters.actions != undefined) { queryFilters.push( q.or( ...filters.actions.map((action) => q.eq(action, q.field("action")), ), ), ); } return q.and(...queryFilters); }) .paginate({ ...paginationOpts, maximumBytesRead, maximumRowsRead, }); return paginatedResults; }, });

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