UNPKG

@focus-reactive/graphql-content-layer

Version:

[![npm version](https://badge.fury.io/js/%40focus-reactive%2Fgraphql-content-layer.svg)](https://badge.fury.io/js/%40focus-reactive%2Fgraphql-content-layer) # GitNation GraphQL Content Layer

72 lines (66 loc) 1.52 kB
const { markdownToHtml } = require('./markdown'); const { jobLogoFragment } = require('./fragments'); const { contentTypeMap } = require('./utils'); const queryPages = /* GraphQL */ ` query($conferenceTitle: ConferenceTitle, $eventYear: EventYear) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id year: conferenceEvents(where: { year: $eventYear }) { id jobAds { id title slogan subtitle description ...logo link events { title } } jobs { id title slogan subtitle description ...logo link } } } } ${jobLogoFragment} `; const fetchData = async (client, vars) => { const data = await client.request(queryPages, vars).then(res => res.conf.year[0]); const fetchedJobs = data.jobs; const fetchedJobAds = data.jobAds; const jobsRaw = [...fetchedJobAds, ...fetchedJobs].map(async jb => ({ ...jb, slogan: await markdownToHtml(jb.slogan), subtitle: await markdownToHtml(jb.subtitle), description: await markdownToHtml(jb.description), image: jb.image && jb.image.url, imageHandle: jb.image && jb.image.handle, contentType: contentTypeMap.Job })); const jobs = await Promise.all(jobsRaw); return { jobs }; }; module.exports = { fetchData, queryPages, getData: data => data.conf.year[0].jobs, story: 'Jobs' };