From febf38a98f2e9bacc81636eea6bc4f9efdb86442 Mon Sep 17 00:00:00 2001 From: Trevor Blades Date: Thu, 11 Oct 2018 13:52:04 -0400 Subject: [PATCH] Add continents and languages --- index.js | 50 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/index.js b/index.js index c7bcffb..6ccaed7 100644 --- a/index.js +++ b/index.js @@ -1,32 +1,64 @@ import {ApolloServer, gql} from 'apollo-server'; -import {countries} from 'countries-list'; +import {continents, countries, languages} from 'countries-list'; + +function toArray(object) { + return Object.keys(object).map(code => ({ + ...object[code], + code + })); +} + +const data = { + continents: Object.entries(continents).map(([code, name]) => ({code, name})), + countries: toArray(countries), + languages: toArray(languages) +}; const typeDefs = gql` + type Continent { + code: String + name: String + } + type Country { code: String name: String native: String phone: String - continent: String + continent: Continent currency: String - languages: [String] + languages: [Language] emoji: String emojiU: String } + type Language { + code: String + name: String + native: String + rtl: Int + } + type Query { + continents: [Continent] countries: [Country] + languages: [Language] } `; -const countriesArray = Object.keys(countries).map(code => ({ - ...countries[code], - code -})); - const resolvers = { + Country: { + continent: country => + data.continents.find(continent => continent.code === country.continent), + languages: country => + data.languages.filter(language => + country.languages.includes(language.code) + ) + }, Query: { - countries: () => countriesArray + continents: () => data.continents, + countries: () => data.countries, + languages: () => data.languages } };