'use strict'; const config = require('config'); const { withPostGraphileContext } = require('postgraphile'); const { graphql } = require('graphql'); const initPg = require('./postgraphile'); const logger = require('../logger')(__filename); async function query(graphqlQuery, params, role = 'query') { const pg = initPg(config.database[role]); return withPostGraphileContext(pg, async (context) => { const schema = await pg.getGraphQLSchema(); const result = await graphql(schema, graphqlQuery, null, context, params); if (result.errors?.length > 0) { logger.error(result.errors); throw result.errors[0]; } return result.data; }); } module.exports = { graphql: query };