UNPKG

graphile-test

Version:
176 lines (175 loc) 6.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getConnectionsWithTiming = exports.getConnectionsWithLogging = exports.getConnectionsUnwrapped = exports.getConnections = exports.getConnectionsObjectWithTiming = exports.getConnectionsObjectWithLogging = exports.getConnectionsObjectUnwrapped = exports.getConnectionsObject = void 0; const pgsql_test_1 = require("pgsql-test"); const graphile_test_1 = require("./graphile-test"); // Core unwrapping utility const unwrap = (res) => { if (res.errors?.length) { throw new Error(JSON.stringify(res.errors, null, 2)); } if (!res.data) { throw new Error('No data returned from GraphQL query'); } return res.data; }; // Base connection setup - shared across all variants const createConnectionsBase = async (input, seedAdapters) => { const conn = await (0, pgsql_test_1.getConnections)(input, seedAdapters); const { pg, db, teardown: dbTeardown } = conn; const gqlContext = (0, graphile_test_1.GraphQLTest)(input, conn); await gqlContext.setup(); const teardown = async () => { await gqlContext.teardown(); await dbTeardown(); }; const baseQuery = (opts) => gqlContext.query(opts); const baseQueryPositional = (query, variables, commit, reqOptions) => gqlContext.query({ query, variables, commit, reqOptions }); return { pg, db, teardown, baseQuery, baseQueryPositional, gqlContext, }; }; // ============================================================================ // REGULAR QUERY VERSIONS // ============================================================================ /** * Creates connections with raw GraphQL responses */ const getConnectionsObject = async (input, seedAdapters) => { const { pg, db, teardown, baseQuery, gqlContext } = await createConnectionsBase(input, seedAdapters); return { pg, db, teardown, query: baseQuery, gqlContext, }; }; exports.getConnectionsObject = getConnectionsObject; /** * Creates connections with unwrapped GraphQL responses (throws on errors) */ const getConnectionsObjectUnwrapped = async (input, seedAdapters) => { const { pg, db, teardown, baseQuery } = await createConnectionsBase(input, seedAdapters); const query = async (opts) => unwrap(await baseQuery(opts)); return { pg, db, teardown, query, }; }; exports.getConnectionsObjectUnwrapped = getConnectionsObjectUnwrapped; /** * Creates connections with logging for GraphQL queries */ const getConnectionsObjectWithLogging = async (input, seedAdapters) => { const { pg, db, teardown, baseQuery } = await createConnectionsBase(input, seedAdapters); const query = async (opts) => { console.log('Executing GraphQL query:', opts.query); const result = await baseQuery(opts); console.log('GraphQL result:', result); return result; }; return { pg, db, teardown, query, }; }; exports.getConnectionsObjectWithLogging = getConnectionsObjectWithLogging; /** * Creates connections with timing for GraphQL queries */ const getConnectionsObjectWithTiming = async (input, seedAdapters) => { const { pg, db, teardown, baseQuery } = await createConnectionsBase(input, seedAdapters); const query = async (opts) => { const start = Date.now(); const result = await baseQuery(opts); const duration = Date.now() - start; console.log(`GraphQL query took ${duration}ms`); return result; }; return { pg, db, teardown, query, }; }; exports.getConnectionsObjectWithTiming = getConnectionsObjectWithTiming; // ============================================================================ // POSITIONAL QUERY VERSIONS // ============================================================================ /** * Creates connections with raw GraphQL responses (positional API) */ const getConnections = async (input, seedAdapters) => { const { pg, db, teardown, baseQueryPositional } = await createConnectionsBase(input, seedAdapters); return { pg, db, teardown, query: baseQueryPositional, }; }; exports.getConnections = getConnections; /** * Creates connections with unwrapped GraphQL responses (positional API, throws on errors) */ const getConnectionsUnwrapped = async (input, seedAdapters) => { const { pg, db, teardown, baseQueryPositional } = await createConnectionsBase(input, seedAdapters); const query = async (queryDoc, variables, commit, reqOptions) => unwrap(await baseQueryPositional(queryDoc, variables, commit, reqOptions)); return { pg, db, teardown, query, }; }; exports.getConnectionsUnwrapped = getConnectionsUnwrapped; /** * Creates connections with logging for GraphQL queries (positional API) */ const getConnectionsWithLogging = async (input, seedAdapters) => { const { pg, db, teardown, baseQueryPositional } = await createConnectionsBase(input, seedAdapters); const query = async (queryDoc, variables, commit, reqOptions) => { console.log('Executing positional GraphQL query:', queryDoc); const result = await baseQueryPositional(queryDoc, variables, commit, reqOptions); console.log('GraphQL result:', result); return result; }; return { pg, db, teardown, query, }; }; exports.getConnectionsWithLogging = getConnectionsWithLogging; /** * Creates connections with timing for GraphQL queries (positional API) */ const getConnectionsWithTiming = async (input, seedAdapters) => { const { pg, db, teardown, baseQueryPositional } = await createConnectionsBase(input, seedAdapters); const query = async (queryDoc, variables, commit, reqOptions) => { const start = Date.now(); const result = await baseQueryPositional(queryDoc, variables, commit, reqOptions); const duration = Date.now() - start; console.log(`Positional GraphQL query took ${duration}ms`); return result; }; return { pg, db, teardown, query, }; }; exports.getConnectionsWithTiming = getConnectionsWithTiming;