Заметка о том как можно быстренько спрототипировать графовый сервис

Делать будем на ноде, почему станет понятнее в процессе

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