protected function loadCompiledQueryFromTemplate(Caching\ICacheAdapter $queryCache, $templateHash, IQueryTemplate $template, Queries\IResolvedParameterRegistry $parameters, callable $compileRequestCallback)
{
if ($template instanceof IStaticQueryTemplate) {
return $template->getCompiledQuery();
}
$resolvedStructuralParameters = $template->resolveStructuralParameters($parameters, $hash);
$compiledQueryHash = md5($templateHash . '-' . $hash);
$compiledQuery = $queryCache->tryGet($compiledQueryHash);
if (!$compiledQuery instanceof ICompiledQuery) {
$compiledQuery = $compileRequestCallback($template, $resolvedStructuralParameters);
$queryCache->save($compiledQueryHash, $compiledQuery);
}
return $compiledQuery;
}