in graphql-dgs-spring-boot-micrometer/src/main/kotlin/com/netflix/graphql/dgs/metrics/micrometer/DgsGraphQLMetricsInstrumentation.kt [365:389]
fun resolveComplexity(parameters: InstrumentationExecuteOperationParameters): Int? {
val executionContext: ExecutionContext = parameters.executionContext
val complexityCalculator: QueryComplexityCalculator =
QueryComplexityCalculator
.newCalculator()
.fieldComplexityCalculator(complexityCalculator)
.schema(executionContext.graphQLSchema)
.document(executionContext.document)
.operationName(executionContext.executionInput.operationName)
.variables(executionContext.coercedVariables)
.build()
val complexity: Int =
try {
complexityCalculator.calculate()
} catch (exc: Exception) {
log.error("Unable to compute the query complexity!", exc)
return null
}
for (bucket in queryComplexityBuckets) {
if (complexity < bucket) {
return bucket
}
}
return Int.MAX_VALUE
}