66 lines
1.8 KiB
JavaScript
66 lines
1.8 KiB
JavaScript
import express from 'express'
|
|
import cors from 'cors'
|
|
import 'dotenv/config'
|
|
import { ApolloServer } from 'apollo-server-express'
|
|
import { mergeSchemas } from 'graphql-tools'
|
|
import { createTransformedRemoteSchema } from './createRemoteSchema'
|
|
import { teams } from './links'
|
|
|
|
async function run () {
|
|
const transformedTeamsSchema = await createTransformedRemoteSchema('teams_', process.env.TEAMS_API_URL)
|
|
const transformedUsersSchema = await createTransformedRemoteSchema('users_', process.env.USERS_API_URL)
|
|
const transformedKeyVaultSchema = await createTransformedRemoteSchema('keyVault_', process.env.KEYVAULT_API_URL)
|
|
|
|
var schemas = []
|
|
var resolvers = {}
|
|
|
|
if (transformedTeamsSchema) {
|
|
schemas.push(transformedTeamsSchema)
|
|
if (transformedUsersSchema) {
|
|
schemas.push(teams.linkSchemaDefs)
|
|
resolvers = Object.assign(resolvers, teams.resolver(transformedUsersSchema))
|
|
}
|
|
}
|
|
if (transformedUsersSchema) {
|
|
schemas.push(transformedUsersSchema)
|
|
}
|
|
if (transformedKeyVaultSchema) {
|
|
schemas.push(transformedKeyVaultSchema)
|
|
}
|
|
|
|
const schema = mergeSchemas({
|
|
schemas,
|
|
resolvers
|
|
})
|
|
|
|
const app = express()
|
|
const server = new ApolloServer({
|
|
schema,
|
|
context: ({ req }) => req, // placeholder until specific use case for context on Master App server
|
|
formatError: error => {
|
|
console.log(JSON.stringify(error))
|
|
return error;
|
|
},
|
|
formatResponse: response => {
|
|
console.log(JSON.stringify(response))
|
|
return response;
|
|
},
|
|
playground: {
|
|
settings: { 'editor.theme': 'light' }
|
|
}
|
|
})
|
|
|
|
server.applyMiddleware({ app });
|
|
|
|
app.use(cors())
|
|
|
|
app.listen(4100)
|
|
console.log('Server running. Open http://localhost:4100/graphql to run queries.')
|
|
}
|
|
|
|
try {
|
|
run()
|
|
} catch (e) {
|
|
console.log(e, e.message, e.stack)
|
|
}
|