Skip to content

Commit 5b6991a

Browse files
committed
feat: add support for additional directives in schema builder
1 parent e9ae0e5 commit 5b6991a

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

modules/module-core/src/utils/schema-builder.ts

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export const buildSchema =
1010
typeDefs,
1111
resolvers,
1212
authDirective: { authDirectiveTypeDefs, authDirectiveTransformer } = authDirective('auth'),
13+
directives = [],
1314
}: {
1415
typeDefs?: TypeSource;
1516
resolvers?:
@@ -19,19 +20,24 @@ export const buildSchema =
1920
authDirectiveTypeDefs: string;
2021
authDirectiveTransformer: (schema: GraphQLSchema) => GraphQLSchema;
2122
};
23+
directives?: Array<[TypeSource, (schema: GraphQLSchema) => GraphQLSchema]>;
2224
} = {}): ApplicationConfig['schemaBuilder'] =>
23-
({ typeDefs: accountsTypeDefs, resolvers: accountsResolvers }) =>
24-
authDirectiveTransformer(
25-
makeExecutableSchema({
26-
typeDefs: mergeTypeDefs([
27-
...accountsTypeDefs,
28-
...(typeDefs ? [typeDefs] : []),
29-
authDirectiveTypeDefs,
30-
]),
31-
resolvers: resolvers
32-
? mergeResolvers([resolvers, ...accountsResolvers] as Maybe<
33-
Maybe<IResolvers<TSource, TContext>>[]
34-
>)
35-
: accountsResolvers,
36-
})
37-
);
25+
({ typeDefs: accountsTypeDefs, resolvers: accountsResolvers }) => {
26+
let schema = makeExecutableSchema({
27+
typeDefs: mergeTypeDefs([
28+
...accountsTypeDefs,
29+
...(typeDefs ? [typeDefs] : []),
30+
authDirectiveTypeDefs,
31+
...directives.map(([directiveTypeDefs]) => directiveTypeDefs),
32+
]),
33+
resolvers: resolvers
34+
? mergeResolvers([resolvers, ...accountsResolvers] as Maybe<
35+
Maybe<IResolvers<TSource, TContext>>[]
36+
>)
37+
: accountsResolvers,
38+
});
39+
for (const [, directiveTransformer] of directives) {
40+
schema = directiveTransformer(schema);
41+
}
42+
return authDirectiveTransformer(schema);
43+
};

0 commit comments

Comments
 (0)