mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
[collab/gitlab] share fragments cache between GQL loaders
GitOrigin-RevId: faa7b01f7251eae04a33b4c007d2bbb687fc5360
This commit is contained in:
committed by
intellij-monorepo-bot
parent
0b9d6a41b8
commit
f08bd8b175
@@ -82,13 +82,13 @@ open class CachingGraphQLQueryLoader(
|
||||
companion object {
|
||||
data class Block(val body: String, val dependencies: Set<String>)
|
||||
|
||||
private fun createFragmentCache(): ConcurrentMap<String, Block> =
|
||||
fun createFragmentCache(): ConcurrentMap<String, Block> =
|
||||
Caffeine.newBuilder()
|
||||
.expireAfterAccess(Duration.of(2, ChronoUnit.MINUTES))
|
||||
.build<String, Block>()
|
||||
.asMap()
|
||||
|
||||
private fun createQueryCache(): ConcurrentMap<String, String> =
|
||||
fun createQueryCache(): ConcurrentMap<String, String> =
|
||||
Caffeine.newBuilder()
|
||||
.expireAfterAccess(Duration.of(1, ChronoUnit.MINUTES))
|
||||
.build<String, String>()
|
||||
|
||||
@@ -61,10 +61,10 @@ suspend fun GitLabApi.GraphQL.gitLabQuery(serverPath: GitLabServerPath, query: G
|
||||
runCatching { rest.getServerMetadata(it).body() }
|
||||
}
|
||||
val queryLoader = if (serverMeta?.enterprise == false) {
|
||||
GitLabCommunityGQLQueryLoader
|
||||
GitLabGQLQueryLoaders.community
|
||||
}
|
||||
else {
|
||||
GitLabGQLQueryLoader
|
||||
GitLabGQLQueryLoaders.default
|
||||
}
|
||||
return query(serverPath.gqlApiUri, { queryLoader.loadQuery(query.filePath) }, variablesObject)
|
||||
}
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.gitlab.api
|
||||
|
||||
import com.intellij.collaboration.api.graphql.CachingGraphQLQueryLoader
|
||||
|
||||
internal object GitLabGQLQueryLoader : CachingGraphQLQueryLoader()
|
||||
@@ -0,0 +1,17 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.gitlab.api
|
||||
|
||||
import com.intellij.collaboration.api.graphql.CachingGraphQLQueryLoader
|
||||
|
||||
internal object GitLabGQLQueryLoaders {
|
||||
private val sharedFragmentsCache = CachingGraphQLQueryLoader.createFragmentCache()
|
||||
|
||||
val default: CachingGraphQLQueryLoader by lazy {
|
||||
CachingGraphQLQueryLoader(sharedFragmentsCache)
|
||||
}
|
||||
val community: CachingGraphQLQueryLoader by lazy {
|
||||
CachingGraphQLQueryLoader(sharedFragmentsCache,
|
||||
fragmentsDirectories = listOf("graphql/fragment/community",
|
||||
"graphql/fragment"))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user