Заметка о том как можно быстренько спрототипировать графовый сервис
Делать будем на ноде, почему станет понятнее в процессе
Playground
Выполнить следующее
mkdir playground
cd playground
npm init -y -f
npm i -S @apollo/server
cat <<EOT >> playground.mjs
import { ApolloServer } from '@apollo/server'
import { startStandaloneServer } from '@apollo/server/standalone'
const typeDefs = `#graphql
type User {
id: ID!
username: String!
}
type Query {
me: User
users(name: String): [User!]!
}
`
const db = {
users: [
{ id: '1', username: 'mac' },
{ id: '2', username: 'vadim' },
{ id: '3', username: 'toma' },
],
}
const resolvers = {
Query: {
me: () => db.users.find(u => u.username === 'mac'),
users: (_, { name }) => (name ? db.users.filter(u => u.username.includes(name)) : db.users),
},
}
const server = new ApolloServer({ typeDefs, resolvers })
startStandaloneServer(server).then(({ url }) => console.log(`open ${url}`))
EOT
npx nodemon playground.mjs