diff --git a/components/dataset/Org.tsx b/components/dataset/Org.tsx index 2cd90b64..6b290574 100644 --- a/components/dataset/Org.tsx +++ b/components/dataset/Org.tsx @@ -1,21 +1,7 @@ import Link from 'next/link'; -import ErrorMessage from '../Error'; import { useQuery } from '@apollo/react-hooks'; -import gql from 'graphql-tag'; - -export const GET_ORG_QUERY = gql` - query dataset($id: String) { - dataset(id: $id) @rest(type: "Response", path: "package_show?{args}") { - result { - organization { - name - title - image_url - } - } - } - } -`; +import ErrorMessage from '../Error'; +import { GET_ORG_QUERY } from '../../graphql/queries'; export default function Org({ variables }) { const { loading, error, data } = useQuery(GET_ORG_QUERY, { diff --git a/components/dataset/Resources.tsx b/components/dataset/Resources.tsx index 2ed6425f..d5214545 100644 --- a/components/dataset/Resources.tsx +++ b/components/dataset/Resources.tsx @@ -1,27 +1,10 @@ import Link from 'next/link'; -import ErrorMessage from '../Error'; import { useQuery } from '@apollo/react-hooks'; -import gql from 'graphql-tag'; - -export const GET_DATAPACKAGE_QUERY = gql` - query dataset($id: String) { - dataset(id: $id) @rest(type: "Response", path: "package_show?{args}") { - result { - name - resources { - name - title - format - created - last_modified - } - } - } - } -`; +import ErrorMessage from '../Error'; +import { GET_RESOURCES_QUERY } from '../../graphql/queries'; export default function Resources({ variables }) { - const { loading, error, data } = useQuery(GET_DATAPACKAGE_QUERY, { + const { loading, error, data } = useQuery(GET_RESOURCES_QUERY, { variables, // Setting this value to true will make the component rerender when // the "networkStatus" changes, so we are able to know if it is fetching diff --git a/components/home/Recent.tsx b/components/home/Recent.tsx index c784aff8..351c98b4 100644 --- a/components/home/Recent.tsx +++ b/components/home/Recent.tsx @@ -1,29 +1,10 @@ import Link from 'next/link'; -import ErrorMessage from '../Error'; import { useQuery } from '@apollo/react-hooks'; -import gql from 'graphql-tag'; - -export const QUERY = gql` - query search($q: String, $sort: String, $rows: Int) { - search(q: $q, sort: $sort, rows: $rows) - @rest(type: "Search", path: "package_search?{args}") { - result { - results { - name - title - organization { - name - title - description - } - } - } - } - } -`; +import ErrorMessage from '../Error'; +import { SEARCH_QUERY } from '../../graphql/queries'; function Recent() { - const { loading, error, data } = useQuery(QUERY, { + const { loading, error, data } = useQuery(SEARCH_QUERY, { variables: { sort: 'metadata_created desc', rows: 3, diff --git a/components/resource/About.tsx b/components/resource/About.tsx index 04a2827e..ab13094c 100644 --- a/components/resource/About.tsx +++ b/components/resource/About.tsx @@ -1,30 +1,9 @@ -import Link from 'next/link'; -import ErrorMessage from '../Error'; import { useQuery } from '@apollo/react-hooks'; -import gql from 'graphql-tag'; - -const QUERY = gql` - query dataset($id: String) { - dataset(id: $id) @rest(type: "Response", path: "package_show?{args}") { - result { - resources { - name - id - title - description - format - size - created - last_modified - url - } - } - } - } -`; +import ErrorMessage from '../Error'; +import { GET_RESOURCES_QUERY } from '../../graphql/queries'; export default function About({ variables }) { - const { loading, error, data } = useQuery(QUERY, { + const { loading, error, data } = useQuery(GET_RESOURCES_QUERY, { variables, // Setting this value to true will make the component rerender when // the "networkStatus" changes, so we are able to know if it is fetching diff --git a/components/resource/DataExplorer.tsx b/components/resource/DataExplorer.tsx index c35e117e..7cba7853 100644 --- a/components/resource/DataExplorer.tsx +++ b/components/resource/DataExplorer.tsx @@ -1,30 +1,9 @@ -import Link from 'next/link'; -import ErrorMessage from '../Error'; import { useQuery } from '@apollo/react-hooks'; -import gql from 'graphql-tag'; - -const QUERY = gql` - query dataset($id: String) { - dataset(id: $id) @rest(type: "Response", path: "package_show?{args}") { - result { - resources { - name - id - title - description - format - size - created - last_modified - url - } - } - } - } -`; +import ErrorMessage from '../Error'; +import { GET_RESOURCES_QUERY } from '../../graphql/queries'; export default function DataExplorer({ variables }) { - const { loading, error, data } = useQuery(QUERY, { + const { loading, error, data } = useQuery(GET_RESOURCES_QUERY, { variables, // Setting this value to true will make the component rerender when // the "networkStatus" changes, so we are able to know if it is fetching diff --git a/components/search/List.tsx b/components/search/List.tsx index 294e7791..49e291ec 100644 --- a/components/search/List.tsx +++ b/components/search/List.tsx @@ -1,28 +1,10 @@ +import { useQuery } from '@apollo/react-hooks'; import Item from './Item'; import ErrorMessage from '../Error'; -import { useQuery } from '@apollo/react-hooks'; -import gql from 'graphql-tag'; - -const QUERY = gql` - query search($q: String, $sort: String) { - search(q: $q, sort: $sort) - @rest(type: "Search", path: "package_search?{args}") { - result { - results { - name - title - organization { - name - title - } - } - } - } - } -`; +import { SEARCH_QUERY } from '../../graphql/queries'; export default function List({ variables }) { - const { loading, error, data } = useQuery(QUERY, { + const { loading, error, data } = useQuery(SEARCH_QUERY, { variables, // Setting this value to true will make the component rerender when // the "networkStatus" changes, so we are able to know if it is fetching diff --git a/components/search/Total.tsx b/components/search/Total.tsx index dfd88609..ecc414e0 100644 --- a/components/search/Total.tsx +++ b/components/search/Total.tsx @@ -1,20 +1,9 @@ -import ErrorMessage from '../Error'; import { useQuery } from '@apollo/react-hooks'; -import gql from 'graphql-tag'; - -const QUERY = gql` - query search($q: String, $sort: String) { - search(q: $q, sort: $sort) - @rest(type: "Search", path: "package_search?{args}") { - result { - count - } - } - } -`; +import ErrorMessage from '../Error'; +import { GET_TOTAL_COUNT_QUERY } from '../../graphql/queries'; export default function Total({ variables }) { - const { loading, error, data } = useQuery(QUERY, { + const { loading, error, data } = useQuery(GET_TOTAL_COUNT_QUERY, { variables, // Setting this value to true will make the component rerender when // the "networkStatus" changes, so we are able to know if it is fetching diff --git a/components/static/List.tsx b/components/static/List.tsx index 32fa3787..f870d61c 100644 --- a/components/static/List.tsx +++ b/components/static/List.tsx @@ -1,19 +1,10 @@ -import ErrorMessage from '../Error'; import parse from 'html-react-parser'; import { useQuery } from '@apollo/react-hooks'; -import gql from 'graphql-tag'; - -const QUERY = gql` - query posts { - posts @rest(type: "Posts", path: "", endpoint: "wordpress-posts") { - found - posts - } - } -`; +import ErrorMessage from '../Error'; +import { GET_POSTS_QUERY } from '../../graphql/queries'; export default function List() { - const { loading, error, data } = useQuery(QUERY, { + const { loading, error, data } = useQuery(GET_POSTS_QUERY, { // Setting this value to true will make the component rerender when // the "networkStatus" changes, so we are able to know if it is fetching // more data diff --git a/components/static/Page.tsx b/components/static/Page.tsx index 75635550..c0db6749 100644 --- a/components/static/Page.tsx +++ b/components/static/Page.tsx @@ -1,22 +1,10 @@ -import ErrorMessage from '../Error'; import parse from 'html-react-parser'; import { useQuery } from '@apollo/react-hooks'; -import gql from 'graphql-tag'; - -const QUERY = gql` - query page($slug: String) { - page(slug: $slug) - @rest(type: "Page", path: "{args.slug}", endpoint: "wordpress") { - title - content - modified - featured_image - } - } -`; +import ErrorMessage from '../Error'; +import { GET_PAGE_QUERY } from '../../graphql/queries'; export default function Page({ variables }) { - const { loading, error, data } = useQuery(QUERY, { + const { loading, error, data } = useQuery(GET_PAGE_QUERY, { variables, // Setting this value to true will make the component rerender when // the "networkStatus" changes, so we are able to know if it is fetching diff --git a/components/static/Post.tsx b/components/static/Post.tsx index ea1e934d..c88dcc52 100644 --- a/components/static/Post.tsx +++ b/components/static/Post.tsx @@ -1,22 +1,10 @@ -import ErrorMessage from '../Error'; import parse from 'html-react-parser'; import { useQuery } from '@apollo/react-hooks'; -import gql from 'graphql-tag'; - -const QUERY = gql` - query page($slug: String) { - page(slug: $slug) - @rest(type: "Page", path: "{args.slug}", endpoint: "wordpress") { - title - content - modified - featured_image - } - } -`; +import ErrorMessage from '../Error'; +import { GET_PAGE_QUERY } from '../../graphql/queries'; export default function Post({ variables }) { - const { loading, error, data } = useQuery(QUERY, { + const { loading, error, data } = useQuery(GET_PAGE_QUERY, { variables, // Setting this value to true will make the component rerender when // the "networkStatus" changes, so we are able to know if it is fetching diff --git a/graphql/queries.ts b/graphql/queries.ts new file mode 100644 index 00000000..34948561 --- /dev/null +++ b/graphql/queries.ts @@ -0,0 +1,149 @@ +import gql from 'graphql-tag'; + +export const GET_ORG_QUERY = gql` + query dataset($id: String) { + dataset(id: $id) @rest(type: "Response", path: "package_show?{args}") { + result { + organization { + name + title + image_url + } + } + } + } +`; + +export const GET_DATAPACKAGE_QUERY = gql` + query dataset($id: String) { + dataset(id: $id) @rest(type: "Response", path: "package_show?{args}") { + result { + name + title + size + metadata_created + metadata_modified + resources { + name + } + } + } + } +`; + +export const GET_RESOURCES_QUERY = gql` + query dataset($id: String) { + dataset(id: $id) @rest(type: "Response", path: "package_show?{args}") { + result { + name + resources { + name + id + title + description + format + size + created + last_modified + url + } + } + } + } +`; + +export const SEARCH_QUERY = gql` + query search($q: String, $sort: String, $rows: Int) { + search(q: $q, sort: $sort, rows: $rows) + @rest(type: "Search", path: "package_search?{args}") { + result { + count + results { + name + title + organization { + name + title + description + } + } + } + } + } +`; + +export const GET_TOTAL_COUNT_QUERY = gql` + query search($q: String, $sort: String) { + search(q: $q, sort: $sort) + @rest(type: "Search", path: "package_search?{args}") { + result { + count + } + } + } +`; + +export const GET_POSTS_QUERY = gql` + query posts { + posts @rest(type: "Posts", path: "", endpoint: "wordpress-posts") { + found + posts + meta + } + } +`; + +export const GET_PAGE_QUERY = gql` + query page($slug: String) { + page(slug: $slug) + @rest(type: "Page", path: "{args.slug}", endpoint: "wordpress") { + title + content + excerpt + slug + date + modified + featured_image + } + } +`; + +export const GET_DATASET_QUERY = gql` + query dataset($id: String) { + dataset(id: $id) @rest(type: "Response", path: "package_show?{args}") { + result { + name + title + size + metadata_created + metadata_modified + resources { + name + title + format + created + last_modified + } + organization { + name + title + image_url + } + } + } + } +`; + +export const GET_POST_QUERY = gql` + query post($slug: String) { + post(slug: $slug) + @rest(type: "Post", path: "{args.slug}", endpoint: "wordpress") { + title + content + excerpt + slug + date + modified + } + } +`; diff --git a/pages/[org]/[dataset]/index.tsx b/pages/[org]/[dataset]/index.tsx index 5122fca8..ee59d2bd 100644 --- a/pages/[org]/[dataset]/index.tsx +++ b/pages/[org]/[dataset]/index.tsx @@ -1,42 +1,15 @@ import { GetServerSideProps } from 'next'; import { useQuery } from '@apollo/react-hooks'; -import { initializeApollo } from '../../../lib/apolloClient'; -import utils from '../../../utils'; import Head from 'next/head'; +import { initializeApollo } from '../../../lib/apolloClient'; import Nav from '../../../components/home/Nav'; import About from '../../../components/dataset/About'; import Org from '../../../components/dataset/Org'; import Resources from '../../../components/dataset/Resources'; -import gql from 'graphql-tag'; - -const QUERY = gql` - query dataset($id: String) { - dataset(id: $id) @rest(type: "Response", path: "package_show?{args}") { - result { - name - title - size - metadata_created - metadata_modified - resources { - name - title - format - created - last_modified - } - organization { - name - title - image_url - } - } - } - } -`; +import { GET_DATASET_QUERY } from '../../../graphql/queries'; function Dataset({ variables }) { - const { data, loading } = useQuery(QUERY, { variables }); + const { data, loading } = useQuery(GET_DATASET_QUERY, { variables }); if (loading) return