import gql from 'graphql-tag' import { graphql, compose } from 'react-apollo' const GetApplication = gql` query GetApplication($orgKey: String, $applicationKey: String, $limit: Int, $offset: Int) { getApplication(orgKey: $orgKey, applicationKey: $applicationKey, limit: $limit, offset: $offset) { } }` const GetApplication = gql` query GetApplication($orgKey: String, $applicationKey: String) { getApplication(orgKey: $orgKey, applicationKey: $applicationKey) { } }` const GetApplication = gql` query GetApplication($orgKey: String, $name: String, $guid: String, $key: String, $hasVersion: Boolean, $limit: Int, $offset: Int, $sortBy: app_sort_by, $order: sort_order) { getApplication(orgKey: $orgKey, name: $name, guid: $guid, key: $key, hasVersion: $hasVersion, limit: $limit, offset: $offset, sortBy: $sortBy, order: $order) { } }` const PostApplication = gql` mutation PostApplication($applicationForm: ApplicationFormInput! , $orgKey: String) { postApplication(applicationForm: $applicationForm, orgKey: $orgKey) { guid organization name key visibility description last_updated_at audit } }` const PutApplication = gql` mutation PutApplication($applicationForm: ApplicationFormInput! , $orgKey: String, $applicationKey: String) { putApplication(applicationForm: $applicationForm, orgKey: $orgKey, applicationKey: $applicationKey) { guid organization name key visibility description last_updated_at audit } }` const DeleteApplication = gql` mutation DeleteApplication($orgKey: String, $applicationKey: String) { deleteApplication(orgKey: $orgKey, applicationKey: $applicationKey) { } }` const PostApplication = gql` mutation PostApplication($moveForm: MoveFormInput! , $orgKey: String, $applicationKey: String) { postApplication(moveForm: $moveForm, orgKey: $orgKey, applicationKey: $applicationKey) { guid organization name key visibility description last_updated_at audit } }` const withAppSyncApplication = compose( graphql(GetApplication, { name: 'getApplication', options: (ownProps) => ({ fetchPolicy: 'cache-and-network', variables: { orgKey: ownProps.orgKey, applicationKey: ownProps.applicationKey, limit: ownProps.limit, offset: ownProps.offset } }), props: (props) => { if (props.getApplication.error) console.log(props.getApplication.error) return props } }), graphql(PutApplication, { props: (props) => ({ putApplication: ownProps => props.mutate({ variables: { applicationForm: ownProps.applicationForm, orgKey: ownProps.orgKey, applicationKey: ownProps.applicationKey }, optimisticResponse: () => ({ putApplication: { ...ownProps.application, __typename: 'Application', version: 1 } }) }) }) }), graphql(DeleteApplication, { props: (props) => ({ deleteApplication: ownProps => props.mutate({ variables: { orgKey: ownProps.orgKey, applicationKey: ownProps.applicationKey }, optimisticResponse: () => ({ deleteApplication: { ...ownProps, __typename: 'Application', version: 1 } }) }) }) }) ) export { GetApplication, GetApplication, GetApplication, PostApplication, PutApplication, DeleteApplication, PostApplication, withAppSyncApplication }