import gql from 'graphql-tag' import { graphql, compose } from 'react-apollo' const GetOrder = gql` query GetOrder($merchantId: String, $number: String) { getOrder(merchantId: $merchantId, number: $number) { id number merchant_id submitted_at total } }` const PostOrder = gql` mutation PostOrder($orderForm: OrderFormInput! , $merchantId: String) { postOrder(orderForm: $orderForm, merchantId: $merchantId) { id number merchant_id submitted_at total } }` const PutOrder = gql` mutation PutOrder($orderForm: OrderFormInput! , $merchantId: String, $number: String) { putOrder(orderForm: $orderForm, merchantId: $merchantId, number: $number) { id number merchant_id submitted_at total } }` const DeleteOrder = gql` mutation DeleteOrder($merchantId: String) { deleteOrder(merchantId: $merchantId) { } }` const withAppSyncOrder = compose( graphql(GetOrder, { name: 'getOrder', options: (ownProps) => ({ fetchPolicy: 'cache-and-network', variables: { merchantId: ownProps.merchantId, number: ownProps.number } }), props: (props) => { if (props.getOrder.error) console.log(props.getOrder.error) return props } }), graphql(PutOrder, { props: (props) => ({ putOrder: ownProps => props.mutate({ variables: { orderForm: ownProps.orderForm, merchantId: ownProps.merchantId, number: ownProps.number }, optimisticResponse: () => ({ putOrder: { ...ownProps.order, __typename: 'Order', version: 1 } }) }) }) }), graphql(DeleteOrder, { props: (props) => ({ deleteOrder: ownProps => props.mutate({ variables: { merchantId: ownProps.merchantId }, optimisticResponse: () => ({ deleteOrder: { ...ownProps, __typename: 'Order', version: 1 } }) }) }) }) ) export { GetOrder, PostOrder, PutOrder, DeleteOrder, withAppSyncOrder }