in http/client/src/commonMain/kotlin/org/jetbrains/packagesearch/api/v3/http/PackageSearchApiClient.kt [370:401]
public suspend fun startScroll(
request: SearchPackagesStartScrollRequest,
requestBuilder: (HttpRequestBuilder.() -> Unit)? = null,
): SearchPackagesScrollResponse {
val scrollCache = scrollRequestCacheCollection.await()
scrollCache.find(selector = ScrollRequestCacheEntry::key.name, value = request)
.firstOrNull()?.also { if (!it.isExpired(cacheDuration)) return it.value }
return defaultRequest<_, SearchPackagesScrollResponse>(
method = HttpMethod.Post,
url = endpoints.startScroll,
body = request,
requestBuilder = requestBuilder,
).also { it ->
scrollCache.updateWhere(
fieldSelector = ScrollRequestCacheEntry::key.name,
fieldValue = request,
upsert = true,
update = ScrollRequestCacheEntry(request, it)
)
val packagesCache = packagesCacheCollection.await()
it.data.forEach {
packagesCache.updateWhere(
fieldSelector = PackageCacheEntry::key.name,
fieldValue = it.idHash,
upsert = true,
update = PackageCacheEntry(it.idHash, it)
)
}
}
}