Skip to content

Commit 46a7c77

Browse files
feat: config property to print schema (#1645)
1 parent cd32413 commit 46a7c77

File tree

4 files changed

+35
-39
lines changed

4 files changed

+35
-39
lines changed

servers/graphql-kotlin-spring-server/src/main/kotlin/com/expediagroup/graphql/server/spring/FederatedSchemaAutoConfiguration.kt

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2022 Expedia, Inc
2+
* Copyright 2023 Expedia, Inc
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -79,18 +79,16 @@ class FederatedSchemaAutoConfiguration(
7979
subscriptions: Optional<List<Subscription>>,
8080
schemaConfig: FederatedSchemaGeneratorConfig,
8181
schemaObject: Optional<Schema>
82-
): GraphQLSchema {
83-
val schema = toFederatedSchema(
84-
config = schemaConfig,
85-
queries = queries.orElse(emptyList()).toTopLevelObjects(),
86-
mutations = mutations.orElse(emptyList()).toTopLevelObjects(),
87-
subscriptions = subscriptions.orElse(emptyList()).toTopLevelObjects(),
88-
schemaObject = schemaObject.orElse(null)?.toTopLevelObject()
89-
)
90-
91-
logger.info("\n${schema.print()}")
92-
93-
return schema
82+
): GraphQLSchema = toFederatedSchema(
83+
config = schemaConfig,
84+
queries = queries.orElse(emptyList()).toTopLevelObjects(),
85+
mutations = mutations.orElse(emptyList()).toTopLevelObjects(),
86+
subscriptions = subscriptions.orElse(emptyList()).toTopLevelObjects(),
87+
schemaObject = schemaObject.orElse(null)?.toTopLevelObject()
88+
).also { federatedSchema ->
89+
if (config.printSchema) {
90+
logger.info("\n${federatedSchema.print()}")
91+
}
9492
}
9593

9694
/**

servers/graphql-kotlin-spring-server/src/main/kotlin/com/expediagroup/graphql/server/spring/GraphQLConfigurationProperties.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ data class GraphQLConfigurationProperties(
2929
val endpoint: String = "graphql",
3030
/** List of supported packages that can contain GraphQL schema type definitions */
3131
val packages: List<String>,
32+
/** Boolean flag indicating whether to print the schema after generator creates it */
33+
val printSchema: Boolean = false,
3234
val federation: FederationConfigurationProperties = FederationConfigurationProperties(),
3335
val subscriptions: SubscriptionConfigurationProperties = SubscriptionConfigurationProperties(),
3436
val playground: PlaygroundConfigurationProperties = PlaygroundConfigurationProperties(),

servers/graphql-kotlin-spring-server/src/main/kotlin/com/expediagroup/graphql/server/spring/GraphQLSchemaConfiguration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2022 Expedia, Inc
2+
* Copyright 2023 Expedia, Inc
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.

servers/graphql-kotlin-spring-server/src/main/kotlin/com/expediagroup/graphql/server/spring/NonFederatedSchemaAutoConfiguration.kt

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2022 Expedia, Inc
2+
* Copyright 2023 Expedia, Inc
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -45,27 +45,25 @@ import java.util.Optional
4545
@ConditionalOnProperty(value = ["graphql.federation.enabled"], havingValue = "false", matchIfMissing = true)
4646
@Configuration
4747
@Import(GraphQLExecutionConfiguration::class)
48-
class NonFederatedSchemaAutoConfiguration {
48+
class NonFederatedSchemaAutoConfiguration(
49+
private val config: GraphQLConfigurationProperties
50+
) {
4951

5052
private val logger = LoggerFactory.getLogger(NonFederatedSchemaAutoConfiguration::class.java)
5153

5254
@Bean
5355
@ConditionalOnMissingBean
5456
fun schemaConfig(
55-
config: GraphQLConfigurationProperties,
5657
topLevelNames: Optional<TopLevelNames>,
5758
hooks: Optional<SchemaGeneratorHooks>,
5859
dataFetcherFactoryProvider: KotlinDataFetcherFactoryProvider
59-
): SchemaGeneratorConfig {
60-
val generatorHooks = hooks.orElse(NoopSchemaGeneratorHooks)
61-
return SchemaGeneratorConfig(
62-
supportedPackages = config.packages,
63-
topLevelNames = topLevelNames.orElse(TopLevelNames()),
64-
hooks = generatorHooks,
65-
dataFetcherFactoryProvider = dataFetcherFactoryProvider,
66-
introspectionEnabled = config.introspection.enabled
67-
)
68-
}
60+
): SchemaGeneratorConfig = SchemaGeneratorConfig(
61+
supportedPackages = config.packages,
62+
topLevelNames = topLevelNames.orElse(TopLevelNames()),
63+
hooks = hooks.orElse(NoopSchemaGeneratorHooks),
64+
dataFetcherFactoryProvider = dataFetcherFactoryProvider,
65+
introspectionEnabled = config.introspection.enabled
66+
)
6967

7068
@Bean
7169
@ConditionalOnMissingBean
@@ -75,17 +73,15 @@ class NonFederatedSchemaAutoConfiguration {
7573
subscriptions: Optional<List<Subscription>>,
7674
schemaConfig: SchemaGeneratorConfig,
7775
schemaObject: Optional<Schema>
78-
): GraphQLSchema {
79-
val schema = toSchema(
80-
config = schemaConfig,
81-
queries = queries.orElse(emptyList()).toTopLevelObjects(),
82-
mutations = mutations.orElse(emptyList()).toTopLevelObjects(),
83-
subscriptions = subscriptions.orElse(emptyList()).toTopLevelObjects(),
84-
schemaObject = schemaObject.orElse(null)?.toTopLevelObject()
85-
)
86-
87-
logger.info("\n${schema.print()}")
88-
89-
return schema
76+
): GraphQLSchema = toSchema(
77+
config = schemaConfig,
78+
queries = queries.orElse(emptyList()).toTopLevelObjects(),
79+
mutations = mutations.orElse(emptyList()).toTopLevelObjects(),
80+
subscriptions = subscriptions.orElse(emptyList()).toTopLevelObjects(),
81+
schemaObject = schemaObject.orElse(null)?.toTopLevelObject()
82+
).also { schema ->
83+
if (config.printSchema) {
84+
logger.info("\n${schema.print()}")
85+
}
9086
}
9187
}

0 commit comments

Comments
 (0)