1
1
const { ApolloServer, gql } = require ( 'apollo-server' ) ;
2
- const fs = require ( 'fs' ) ;
2
+ const { readFileSync } = require ( 'fs' ) ;
3
3
const driver = require ( './driver.js' ) ;
4
4
const graphqlResolvers = require ( './resolvers.js' ) ;
5
5
const graphqlCustomResolvers = require ( './custom-resolvers.js' ) ;
6
6
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
-
11
7
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 } ` ;
19
12
20
- if ( process . env . DISABLE_LOGGING ) {
21
- console . info = function ( ) { } ;
13
+ // Enable/disable debugging
14
+ if ( process . env . DEBUG !== 'true' ) {
15
+ console . debug = function ( ) { } ;
22
16
}
23
17
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
26
37
} ) ;
27
- }
28
38
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 } ` ) ;
32
49
} ) ;
33
50
}
34
51
35
- main ( ) ;
52
+ // Run server
53
+ run ( ) . then ( ( ) => { err => console . error ( err ) ; } ) ;
0 commit comments