Cleaning it all a bit before the call (didn't heavy test this)
This commit is contained in:
1 parent
e643b4dc8d
commit
f04904c236
4 files changed
+56
-25
No files matched your search
@@ -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
@@ -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()
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
import teams from './teams'
|
||||
|
||||
export { teams }
|
||||
@@ -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 }
|
||||
Reference in new issue
Block a user