Skip to content

Commit ee58bc6

Browse files
committed
resolve issue #56, clean up server.js code
1 parent e11e029 commit ee58bc6

File tree

2 files changed

+54
-33
lines changed

2 files changed

+54
-33
lines changed

graphql-server/drivers/arangodb/driver.js

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
const graphql = require('graphql');
22
const arangojs = require("arangojs");
33
const aql = arangojs.aql;
4+
const { makeExecutableSchema } = require('graphql-tools');
45
const { ApolloError } = require('apollo-server');
56
const waitOn = require('wait-on');
67

78
let db;
89
let disableEdgeValidation;
910

1011
module.exports = {
11-
init: async function(schema){
12-
let db_name = process.env.db ? process.env.db: 'dev-db';
13-
let url = process.env.URL ? process.env.URL : 'http://localhost:8529';
14-
let drop = process.env.DROP === 'true';
15-
disableEdgeValidation = process.env.DISABLE_EDGE_VALIDATION === 'true';
12+
init: async function(args){
13+
let typeDefs = args.typeDefs;
14+
let db_name = args.db_name || 'dev-db';
15+
let url = args.url || 'http://localhost:8529';
16+
let drop = args.drop || false;
17+
disableEdgeValidation = args.disableEdgeValidation || false;
18+
1619
db = new arangojs.Database({ url: url });
1720

1821
// wait for ArangoDB
@@ -34,6 +37,11 @@ module.exports = {
3437
() => console.log()
3538
);
3639
}
40+
const schema = makeExecutableSchema({
41+
'typeDefs': typeDefs,
42+
'resolvers': {}
43+
});
44+
3745
await createAndUseDatabase(db, db_name);
3846
await createTypeCollections(db, schema);
3947
await createEdgeCollections(db, schema);
@@ -71,14 +79,9 @@ module.exports = {
7179
},
7280
getEdgeCollectionName: function(type, field){
7381
return getEdgeCollectionName(type, field);
74-
},
75-
hello: () => hello() // TODO: Remove after testing
82+
}
7683
};
7784

78-
async function hello(){
79-
return "This is the arangodb.tools saying hello!"
80-
}
81-
8285
async function createAndUseDatabase(db, db_name){
8386
await db.createDatabase(db_name).then(
8487
() => { console.info(`Database '${db_name}' created`); },
@@ -97,7 +100,7 @@ async function createTypeCollections(db, schema) {
97100
await collection.create().then(
98101
() => { console.info(`Collection '${collection_name}' created`) },
99102
err => {
100-
//console.warn(`Collection '${collection_name}' not created:` , err.response.body.errorMessage);
103+
console.warn(`Collection '${collection_name}' not created:` , err.response.body.errorMessage);
101104
}
102105
);
103106
}

graphql-server/server.js

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,53 @@
11
const { ApolloServer, gql } = require('apollo-server');
2-
const fs = require('fs');
2+
const { readFileSync } = require('fs');
33
const driver = require('./driver.js');
44
const graphqlResolvers = require('./resolvers.js');
55
const graphqlCustomResolvers = require('./custom-resolvers.js');
66

7-
const text = fs.readFileSync('api-schema/api-schema.graphql', 'utf8');
8-
const textExtend = fs.readFileSync('api-schema/custom-api-schema.graphql', 'utf8');
9-
const typeDefs = gql`${text + textExtend}`;
10-
117
async function run(){
12-
// setup resolvers
13-
const resolvers = await graphqlResolvers.get({ driver: driver });
14-
const customResolvers = await graphqlCustomResolvers.get({ driver: driver });
15-
resolvers.Query = {...resolvers.Query, ...customResolvers.Query};
16-
17-
const server = new ApolloServer({typeDefs, resolvers: resolvers});
18-
await driver.init(server.schema);
8+
// parse API schema and extended schema
9+
const baseSchema = readFileSync('api-schema/api-schema.graphql', 'utf8');
10+
const customSchema = readFileSync('api-schema/custom-api-schema.graphql', 'utf8');
11+
const typeDefs = gql`${baseSchema} ${customSchema}`;
1912

20-
if(process.env.DISABLE_LOGGING){
21-
console.info = function() {};
13+
// Enable/disable debugging
14+
if(process.env.DEBUG !== 'true'){
15+
console.debug = function() {};
2216
}
2317

24-
server.listen().then(({ url }) => {
25-
console.log(`GraphQL service ready at: ${url}`);
18+
// Driver options
19+
// Use environment variables to customize settings when starting the server
20+
let args = {
21+
'typeDefs': gql`${baseSchema}`,
22+
'db_name': process.env.DB_NAME || 'spirit-db',
23+
'url': process.env.URL || 'http://localhost:8529',
24+
'drop': process.env.DROP === 'true',
25+
'disableEdgeValidation': process.env.DISABLE_EDGE_VALIDATION === 'true'
26+
};
27+
await driver.init(args);
28+
29+
// Load base resolvers
30+
const resolvers = await graphqlResolvers.get({
31+
driver: driver
32+
});
33+
// Load custom resolvers
34+
// Configure the get-request below if your custom resolvers require additional options
35+
const customResolvers = await graphqlCustomResolvers.get({
36+
driver: driver
2637
});
27-
}
2838

29-
function main(){
30-
run().then(() => {
31-
err => console.error(err);
39+
// Create instance of server and start listening
40+
const server = new ApolloServer({
41+
'typeDefs': typeDefs,
42+
'resolvers': [
43+
resolvers,
44+
customResolvers
45+
]
46+
});
47+
server.listen().then(({ url }) => {
48+
console.log(`GraphQL service ready at: ${url}`);
3249
});
3350
}
3451

35-
main();
52+
// Run server
53+
run().then(() => { err => console.error(err); });

0 commit comments

Comments
 (0)