From cc7925ca336c7bef811ba6ba77124d23eea1ee67 Mon Sep 17 00:00:00 2001 From: lif3ng Date: Tue, 24 Aug 2021 11:14:44 +0800 Subject: [PATCH] Separate schema and resolvers --- src/index.js | 43 ++++++++------------------------------- src/resolvers/index.js | 7 +++++++ src/resolvers/mutation.js | 7 +++++++ src/resolvers/query.js | 5 +++++ src/schema.js | 18 ++++++++++++++++ 5 files changed, 46 insertions(+), 34 deletions(-) create mode 100644 src/resolvers/index.js create mode 100644 src/resolvers/mutation.js create mode 100644 src/resolvers/query.js create mode 100644 src/schema.js diff --git a/src/index.js b/src/index.js index 1ad5631..96ec344 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,8 @@ const express = require('express'); -const { ApolloServer, gql } = require('apollo-server-express'); +const { ApolloServer } = require('apollo-server-express'); +const typeDefs = require('./schema'); +const resolvers = require('./resolvers'); + require('dotenv').config(); const db = require('./db'); @@ -9,43 +12,15 @@ const port = process.env.PORT || 4000; const DB_HOST = process.env.DB_HOST; -const typeDefs = gql` - type Note { - id: ID! - content: String! - author: String! - } - type Query { - hello: String! - notes: [Note!]! - note(id: ID!): Note! - } - - type Mutation { - newNote(content: String!): Note! - } -`; - -const resolvers = { - Query: { - hello: () => 'hello', - notes: async () => await models.Note.find(), - note: async (parent, args) => await models.Note.findById(args.id) - }, - Mutation: { - newNote: async (parent, args) => - await models.Note.create({ - content: args.content, - author: 'a author str' - }) - } -}; - const app = express(); db.connect(DB_HOST); -const server = new ApolloServer({ typeDefs, resolvers }); +const server = new ApolloServer({ + typeDefs, + resolvers, + context: () => ({ models }) +}); server.applyMiddleware({ app, path: '/api' }); app.listen({ port }, () => { console.log( diff --git a/src/resolvers/index.js b/src/resolvers/index.js new file mode 100644 index 0000000..51332ee --- /dev/null +++ b/src/resolvers/index.js @@ -0,0 +1,7 @@ +const Query = require('./query'); +const Mutation = require('./mutation'); + +module.exports = { + Query, + Mutation +}; diff --git a/src/resolvers/mutation.js b/src/resolvers/mutation.js new file mode 100644 index 0000000..2acb3f9 --- /dev/null +++ b/src/resolvers/mutation.js @@ -0,0 +1,7 @@ +module.exports = { + newNote: async (parent, args, { models }) => + await models.Note.create({ + content: args.content, + author: 'a author str' + }) +}; diff --git a/src/resolvers/query.js b/src/resolvers/query.js new file mode 100644 index 0000000..30ab499 --- /dev/null +++ b/src/resolvers/query.js @@ -0,0 +1,5 @@ +module.exports = { + hello: () => 'hello', + notes: async (parent, args, { models }) => await models.Note.find(), + note: async (parent, args, { models }) => await models.Note.findById(args.id) +}; diff --git a/src/schema.js b/src/schema.js new file mode 100644 index 0000000..067d14f --- /dev/null +++ b/src/schema.js @@ -0,0 +1,18 @@ +const { gql } = require('apollo-server-express'); + +module.exports = gql` + type Note { + id: ID! + content: String! + author: String! + } + type Query { + hello: String! + notes: [Note!]! + note(id: ID!): Note! + } + + type Mutation { + newNote(content: String!): Note! + } +`;