database-bridge-lambda/run.ts (56 lines of code) (raw):

import { handler } from "./src"; import { AppSyncResolverEvent } from "aws-lambda/trigger/appsync-resolver"; import { createDatabaseTunnel } from "../shared/database/local/databaseTunnel"; import prompts from "prompts"; import { DatabaseOperation } from "../shared/graphql/operations"; import { getYourEmail } from "../shared/local/yourEmail"; import { CreateItemInput, EditItemInput } from "../shared/graphql/graphql"; (async () => { const baseInput = { identity: { resolverContext: { userEmail: await getYourEmail() } }, }; const sampleInputs: Partial<Record<DatabaseOperation, unknown>> = { listItems: { pinboardId: "63206" }, searchMentionableUsers: { prefix: "a" }, claimItem: { itemId: "1667" }, getGroupPinboardIds: {}, getItemCounts: { pinboardIds: ["65183"] }, createItem: { input: { type: "message-only", pinboardId: "63206", message: "DB testing", } as CreateItemInput, }, editItem: { itemId: "2352", input: { message: "DB testing MODIFIED", payload: JSON.stringify({ blah: "payload added" }), type: "testing", } as EditItemInput, }, deleteItem: { itemId: "2352" }, getMyUser: {}, visitTourStep: { tourStepId: "testing" }, }; await createDatabaseTunnel(); // noinspection InfiniteLoopJS while ( // eslint-disable-next-line no-constant-condition true ) { const { inputPayload } = await prompts({ type: "select", name: "inputPayload", message: "Operation?", choices: Object.entries(sampleInputs).map(([operation, sampleInput]) => ({ title: operation, value: { ...baseInput, arguments: sampleInput, info: { fieldName: operation }, } as AppSyncResolverEvent<unknown, unknown>, })), }); console.log(JSON.stringify(await handler(inputPayload), null, 2)); } })();