mirror of
https://github.com/FranP-code/countries.git
synced 2025-10-13 00:02:15 +00:00
Add queries/resolvers for single assets
This commit is contained in:
69
index.js
69
index.js
@@ -1,4 +1,6 @@
|
||||
import {ApolloServer, gql} from 'apollo-server';
|
||||
import resolvers from './resolvers';
|
||||
import typeDefs from './schema';
|
||||
import {ApolloServer} from 'apollo-server';
|
||||
import {continents, countries, languages} from 'countries-list';
|
||||
|
||||
function toArray(object) {
|
||||
@@ -8,61 +10,18 @@ function toArray(object) {
|
||||
}));
|
||||
}
|
||||
|
||||
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
|
||||
const server = new ApolloServer({
|
||||
typeDefs,
|
||||
resolvers,
|
||||
context: {
|
||||
continents: Object.entries(continents).map(([code, name]) => ({
|
||||
code,
|
||||
name
|
||||
})),
|
||||
countries: toArray(countries),
|
||||
languages: toArray(languages)
|
||||
}
|
||||
|
||||
type Country {
|
||||
code: String
|
||||
name: String
|
||||
native: String
|
||||
phone: String
|
||||
continent: Continent
|
||||
currency: 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 resolvers = {
|
||||
Country: {
|
||||
continent: country =>
|
||||
data.continents.find(continent => continent.code === country.continent),
|
||||
languages: country =>
|
||||
data.languages.filter(language =>
|
||||
country.languages.includes(language.code)
|
||||
)
|
||||
},
|
||||
Query: {
|
||||
continents: () => data.continents,
|
||||
countries: () => data.countries,
|
||||
languages: () => data.languages
|
||||
}
|
||||
};
|
||||
|
||||
const server = new ApolloServer({typeDefs, resolvers});
|
||||
});
|
||||
|
||||
server.listen({port: process.env.PORT}).then(({url}) => {
|
||||
console.log(`🚀 Server ready at ${url}`);
|
||||
|
||||
Reference in New Issue
Block a user