From 4320bd639b7c690d1f2b78a2ee36e9063b482569 Mon Sep 17 00:00:00 2001 From: Trevor Blades Date: Sun, 2 Feb 2020 15:27:41 -0800 Subject: [PATCH] Add states field to country --- package-lock.json | 5 +++++ package.json | 3 ++- resolvers.js | 20 ++++++++++++++++---- schema.js | 7 +++++++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9ee9ce8..2b62454 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6707,6 +6707,11 @@ "long": "^4.0.0" } }, + "provinces": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/provinces/-/provinces-1.11.0.tgz", + "integrity": "sha1-Rni9Y+iBHwoZTrwcV+7hxV585sI=" + }, "proxy-addr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", diff --git a/package.json b/package.json index 9fc2899..0300e23 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "apollo-server": "^2.7.0", "countries-list": "^2.4.3", "esm": "^3.2.25", - "graphql": "^14.4.2" + "graphql": "^14.4.2", + "provinces": "^1.11.0" }, "devDependencies": { "@trevorblades/eslint-config": "^7.0.1", diff --git a/resolvers.js b/resolvers.js index c61b9fc..a0359a8 100644 --- a/resolvers.js +++ b/resolvers.js @@ -1,3 +1,4 @@ +import provinces from 'provinces'; import {continents, countries, languages} from 'countries-list'; export default { @@ -8,20 +9,31 @@ export default { name: continents[continent] }; }, - languages(parent) { - return parent.languages.map(code => { + languages(country) { + return country.languages.map(code => { const language = languages[code]; return { ...language, code }; }); + }, + states(country) { + return provinces.filter(province => province.country === country.code); + } + }, + State: { + code(state) { + return state.short; + }, + country(state) { + return countries[state.country]; } }, Continent: { - countries(parent) { + countries(continent) { return Object.entries(countries) - .filter(entry => entry[1].continent === parent.code) + .filter(entry => entry[1].continent === continent.code) .map(([code, country]) => ({ ...country, code diff --git a/schema.js b/schema.js index 1460d3b..38861e8 100644 --- a/schema.js +++ b/schema.js @@ -17,6 +17,13 @@ export default gql` languages: [Language] emoji: String emojiU: String + states: [State] + } + + type State { + code: String + name: String + country: Country } type Language {