Skip to content

Commit 7a860f4

Browse files
committed
Restructure
1 parent 49dd673 commit 7a860f4

File tree

9 files changed

+102
-63
lines changed

9 files changed

+102
-63
lines changed

src/context.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { getAuthIdFromJWT } from './util/auth'
2+
3+
export default async ({ req }) => {
4+
const context = {}
5+
6+
const jwt = req.headers.authorization
7+
const authId = await getAuthIdFromJWT(jwt)
8+
if (authId === 'github|1615') {
9+
context.user = {
10+
firstName: 'John',
11+
lastName: 'Resig'
12+
}
13+
}
14+
15+
return context
16+
}

src/data-sources/index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import Reviews from './Reviews'
2+
import { db } from '../db'
3+
4+
export default () => ({
5+
reviews: new Reviews(db.collection('reviews'))
6+
})

src/index.js

Lines changed: 9 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,14 @@
1-
import { ApolloServer, gql } from 'apollo-server'
2-
import { getAuthIdFromJWT } from './util/auth'
3-
import Reviews from './data-sources/Reviews'
4-
import { db } from './db'
1+
import { ApolloServer } from 'apollo-server'
2+
import typeDefs from './schema/schema.graphql'
3+
import resolvers from './resolvers'
4+
import dataSources from './data-sources'
5+
import context from './context'
56

67
const server = new ApolloServer({
7-
typeDefs: gql`
8-
type Query {
9-
me: User
10-
hello: String!
11-
reviews: [Review!]!
12-
}
13-
type User {
14-
firstName: String
15-
lastName: String
16-
}
17-
type Review {
18-
text: String!
19-
stars: Int
20-
fullReview: String!
21-
}
22-
type Mutation {
23-
createReview(review: CreateReviewInput!): Review
24-
}
25-
input CreateReviewInput {
26-
text: String!
27-
stars: Int
28-
}
29-
`,
30-
resolvers: {
31-
Query: {
32-
me: (_, __, context) => context.user,
33-
hello: () => '🌍🌏🌎',
34-
reviews: (_, __, { dataSources }) => dataSources.reviews.all()
35-
},
36-
Review: {
37-
fullReview: review =>
38-
`Someone on the internet gave ${review.stars} stars, saying: "${
39-
review.text
40-
}"`
41-
},
42-
Mutation: {
43-
createReview: (_, { review }) => {
44-
reviews.push(review)
45-
return review
46-
}
47-
}
48-
},
49-
dataSources: () => ({
50-
reviews: new Reviews(db.collection('reviews'))
51-
}),
52-
context: async ({ req }) => {
53-
const context = {}
54-
55-
const jwt = req.headers.authorization
56-
const authId = await getAuthIdFromJWT(jwt)
57-
if (authId === 'github|1615') {
58-
context.user = {
59-
firstName: 'John',
60-
lastName: 'Resig'
61-
}
62-
}
63-
64-
return context
65-
}
8+
typeDefs,
9+
resolvers,
10+
dataSources,
11+
context
6612
})
6713

6814
server

src/resolvers/Review.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
export default {
2+
Query: {
3+
reviews: (_, __, { dataSources }) => dataSources.reviews.all()
4+
},
5+
Review: {
6+
fullReview: review =>
7+
`Someone on the internet gave ${review.stars} stars, saying: "${
8+
review.text
9+
}"`
10+
},
11+
Mutation: {
12+
createReview: (_, { review }) => {
13+
reviews.push(review)
14+
return review
15+
}
16+
}
17+
}

src/resolvers/User.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default {
2+
Query: {
3+
me: (_, __, context) => context.user
4+
}
5+
}

src/resolvers/index.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { merge } from 'lodash'
2+
3+
const resolvers = {
4+
Query: {
5+
hello: () => '🌍🌏🌎'
6+
}
7+
}
8+
9+
import Review from './Review'
10+
import User from './User'
11+
12+
const resolversByType = [Review, User]
13+
14+
resolversByType.forEach(type => merge(resolvers, type))
15+
16+
export default resolvers

src/schema/Review.graphql

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
type Review {
2+
text: String!
3+
stars: Int
4+
fullReview: String!
5+
}
6+
7+
extend type Query {
8+
reviews: [Review!]!
9+
}
10+
11+
type Mutation {
12+
createReview(review: CreateReviewInput!): Review
13+
}
14+
15+
input CreateReviewInput {
16+
text: String!
17+
stars: Int
18+
}

src/schema/User.graphql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
type User {
2+
firstName: String
3+
lastName: String
4+
}
5+
6+
extend type Query {
7+
me: User
8+
}

src/schema/schema.graphql

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
type Query {
2+
hello: String!
3+
}
4+
5+
# import Review first
6+
#import 'Review.graphql'
7+
#import 'User.graphql'

0 commit comments

Comments
 (0)