@inflightit/api-plugin-orders
Version:
Orders plugin for the Reaction API
34 lines (29 loc) • 1.39 kB
JavaScript
import getPaginatedResponse from "@reactioncommerce/api-utils/graphql/getPaginatedResponse.js";
import wasFieldRequested from "@reactioncommerce/api-utils/graphql/wasFieldRequested.js";
import { decodeShopOpaqueId } from "../../xforms/id.js";
/**
* @name Query/orders
* @method
* @memberof Order/GraphQL
* @summary Get an order by its reference ID
* @param {Object} parentResult - unused
* @param {ConnectionArgs} args - An object of all arguments that were sent by the client
* @param {Object} args.filters - An Object of filters to apply
* @param {String} args.shopIds - shop IDs to check for orders from
* @param {Object} context - An object containing the per-request state
* @param {Object} info Info about the GraphQL request
* @returns {Promise<Object>|undefined} An Order object
*/
export default async function orders(parentResult, args, context, info) {
const { filters, shopIds: opaqueShopIds, ...connectionArgs } = args;
const shopIds = opaqueShopIds && opaqueShopIds.map(decodeShopOpaqueId);
const query = await context.queries.orders(context, {
filters,
shopIds
});
return getPaginatedResponse(query, connectionArgs, {
includeHasNextPage: wasFieldRequested("pageInfo.hasNextPage", info),
includeHasPreviousPage: wasFieldRequested("pageInfo.hasPreviousPage", info),
includeTotalCount: wasFieldRequested("totalCount", info)
});
}