Cleaning it all a bit before the call (didn't heavy test this)

This commit is contained in:
Nikola Bjelo committed 2018-10-11 17:52:17 +02:00
1 parent e643b4dc8d
commit f04904c236
4 files changed
+56 -25

No files matched your search

+8 -1
View File
@@ -35,7 +35,14 @@ export const createRemoteSchema = async (uri) => {
}
export const createTransformedRemoteSchema = async (prefix, uri) => {
const schema = await createRemoteSchema(uri)
var schema
try {
schema = await createRemoteSchema(uri)
} catch (error) {
console.log(`An error occured while fetching ${prefix} schema :`)
console.log(error)
return false
}
const transformedSchema = transformSchema(schema, [
new RenameTypes((name) => prefix + capitalize(name)),
new RenameRootFields((operation, name) => prefix + capitalize(name))
+18 -24
View File
@@ -4,39 +4,33 @@ import 'dotenv/config'
import { graphqlExpress, graphiqlExpress } from 'apollo-server-express'
import { mergeSchemas } from 'graphql-tools'
import { createTransformedRemoteSchema } from './createRemoteSchema'
import { teams } from './links'
async function run () {
const transformedTeamsSchema = await createTransformedRemoteSchema('TeamsModule', process.env.TEAMS_API_URL)
const transformedUsersSchema = await createTransformedRemoteSchema('UsersModule', process.env.USERS_API_URL)
const transformedKeyVaultSchema = await createTransformedRemoteSchema('KeyVaultModule', process.env.KEYVAULT_API_URL)
const linkSchemaDefs =
`
extend type TeamsModuleTeam {
ownerUser: UsersModuleUser
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: [transformedTeamsSchema, transformedUsersSchema, transformedKeyVaultSchema, linkSchemaDefs],
resolvers: {
TeamsModuleTeam: {
ownerUser: {
fragment: `fragment UserFragment on TeamsModuleTeam{owner}`,
resolve (parent, args, context, info) {
const authId = parent.owner
return info.mergeInfo.delegateToSchema({
schema: transformedUsersSchema,
operation: 'query',
fieldName: 'UsersModuleUserByAuthId',
args: { authId },
context,
info
})
}
}
}
}
schemas,
resolvers
})
const app = express()
+3
View File
@@ -0,0 +1,3 @@
import teams from './teams'
export { teams }
+27
View File
@@ -0,0 +1,27 @@
export const linkSchemaDefs =
`
extend type TeamsModuleTeam {
ownerUser: UsersModuleUser
}
`
export const resolver = (usersSchema) => ({
TeamsModuleTeam: {
ownerUser: {
fragment: `fragment UserFragment on TeamsModuleTeam{owner}`,
resolve (parent, args, context, info) {
const authId = parent.owner
return info.mergeInfo.delegateToSchema({
schema: usersSchema,
operation: 'query',
fieldName: 'UsersModuleUserByAuthId',
args: { authId },
context,
info
})
}
}
}
})
export default { resolver, linkSchemaDefs }