-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathserver.js
78 lines (60 loc) · 1.34 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
const jsonServer = require('json-server');
const { ApolloServer, gql } = require('apollo-server');
var fs = require('fs');
const server = jsonServer.create();
const router = jsonServer.router('db.json');
const middlewares = jsonServer.defaults();
const port = process.env.PORT || 3000;
const GQL_PORT = process.env.GRAPHQL_PORT || 5000;
server.use(middlewares);
server.use(router);
server.listen(port);
// graphql server
const typeDefs = gql`
type Verse {
id: Int!
name: String!
description: String!
references: String!
grade: String!
}
type Query {
verses: [Verse!]!
verse(id: Int!): Verse!
}
type Mutation {
p: Verse
}
`;
const resolvers = {
Query: {
verses: async () => {
try {
const obj = JSON.parse(fs.readFileSync('./db.json', 'utf8'));
return obj.hadiths;
} catch (error) {
throw error;
}
},
verse: async (_parent, { id }, _ctx) => {
try {
const obj = JSON.parse(fs.readFileSync('./db.json', 'utf8'));
const verse = obj.hadiths.find((verse) => verse.id === id);
if (!verse) throw new Error('verse not found');
return verse;
} catch (error) {
throw error;
}
},
},
Mutation: {
p: () => null,
},
};
const gqlServer = new ApolloServer({
typeDefs,
resolvers,
});
gqlServer.listen(GQL_PORT).then(() => {
console.log('graphql server running on port ' + GQL_PORT);
});