import gql from 'graphql-tag' import { graphql, compose } from 'react-apollo' const GetOrganization = gql` query GetOrganization($guid: String, $userGuid: String, $key: String, $name: String, $namespace: String, $limit: Int, $offset: Int) { getOrganization(guid: $guid, userGuid: $userGuid, key: $key, name: $name, namespace: $namespace, limit: $limit, offset: $offset) { } }` const GetOrganization = gql` query GetOrganization($key: String) { getOrganization(key: $key) { guid key name namespace visibility domains { name } audit } }` const PostOrganization = gql` mutation PostOrganization($organizationForm: OrganizationFormInput! ) { postOrganization(organizationForm: $organizationForm) { guid key name namespace visibility domains { name } audit } }` const PutOrganization = gql` mutation PutOrganization($organizationForm: OrganizationFormInput! , $key: String) { putOrganization(organizationForm: $organizationForm, key: $key) { guid key name namespace visibility domains { name } audit } }` const DeleteOrganization = gql` mutation DeleteOrganization($key: String) { deleteOrganization(key: $key) { } }` const GetOrganization = gql` query GetOrganization($key: String, $name: String, $limit: Int, $offset: Int) { getOrganization(key: $key, name: $name, limit: $limit, offset: $offset) { } }` const GetOrganization = gql` query GetOrganization($key: String, $name: String) { getOrganization(key: $key, name: $name) { guid attribute { guid name } value audit } }` const PutOrganization = gql` mutation PutOrganization($attributeValueForm: AttributeValueFormInput! , $key: String, $name: String) { putOrganization(attributeValueForm: $attributeValueForm, key: $key, name: $name) { guid attribute { guid name } value audit } }` const DeleteOrganization = gql` mutation DeleteOrganization($key: String, $name: String) { deleteOrganization(key: $key, name: $name) { } }` const withAppSyncOrganization = compose( graphql(GetOrganization, { name: 'getOrganization', options: (ownProps) => ({ fetchPolicy: 'cache-and-network', variables: { guid: ownProps.guid, userGuid: ownProps.userGuid, key: ownProps.key, name: ownProps.name, namespace: ownProps.namespace, limit: ownProps.limit, offset: ownProps.offset } }), props: (props) => { if (props.getOrganization.error) console.log(props.getOrganization.error) return props } }), graphql(PutOrganization, { props: (props) => ({ putOrganization: ownProps => props.mutate({ variables: { organizationForm: ownProps.organizationForm, key: ownProps.key }, optimisticResponse: () => ({ putOrganization: { ...ownProps.organization, __typename: 'Organization', version: 1 } }) }) }) }), graphql(DeleteOrganization, { props: (props) => ({ deleteOrganization: ownProps => props.mutate({ variables: { key: ownProps.key }, optimisticResponse: () => ({ deleteOrganization: { ...ownProps, __typename: 'Organization', version: 1 } }) }) }) }) ) export { GetOrganization, GetOrganization, PostOrganization, PutOrganization, DeleteOrganization, GetOrganization, GetOrganization, PutOrganization, DeleteOrganization, withAppSyncOrganization }