Wire admin studio SSR and search infrastructure
This commit is contained in:
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Services\Sitemaps;
|
||||
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
final class PublishedSitemapResolver
|
||||
{
|
||||
public function __construct(private readonly SitemapReleaseManager $releases)
|
||||
@@ -23,9 +25,23 @@ final class PublishedSitemapResolver
|
||||
*/
|
||||
public function resolveNamed(string $requestedName): ?array
|
||||
{
|
||||
$manifest = $this->releases->activeManifest();
|
||||
$releaseId = Cache::remember(
|
||||
'sitemaps:active-release-id',
|
||||
60,
|
||||
fn (): ?string => $this->releases->activeReleaseId(),
|
||||
);
|
||||
|
||||
if ($manifest === null) {
|
||||
if (! is_string($releaseId) || $releaseId === '') {
|
||||
return null;
|
||||
}
|
||||
|
||||
$manifest = Cache::remember(
|
||||
'sitemaps:manifest:' . $releaseId,
|
||||
3600,
|
||||
fn (): ?array => $this->releases->readManifest($releaseId),
|
||||
);
|
||||
|
||||
if (! is_array($manifest)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -36,13 +52,27 @@ final class PublishedSitemapResolver
|
||||
|
||||
private function resolveDocumentName(string $documentName): ?array
|
||||
{
|
||||
$releaseId = $this->releases->activeReleaseId();
|
||||
$releaseId = Cache::remember(
|
||||
'sitemaps:active-release-id',
|
||||
60,
|
||||
fn (): ?string => $this->releases->activeReleaseId(),
|
||||
);
|
||||
|
||||
if ($releaseId === null) {
|
||||
if (! is_string($releaseId) || $releaseId === '') {
|
||||
return null;
|
||||
}
|
||||
|
||||
$content = $this->releases->getDocument($releaseId, $documentName);
|
||||
$ttl = max((int) config('sitemaps.cache_ttl_seconds', 900), 3600);
|
||||
$cacheKey = 'sitemaps:doc:' . $releaseId . ':' . $documentName;
|
||||
|
||||
$content = Cache::get($cacheKey);
|
||||
|
||||
if (! is_string($content) || $content === '') {
|
||||
$content = $this->releases->getDocument($releaseId, $documentName);
|
||||
if (is_string($content) && $content !== '') {
|
||||
Cache::put($cacheKey, $content, $ttl);
|
||||
}
|
||||
}
|
||||
|
||||
return is_string($content) && $content !== ''
|
||||
? ['content' => $content, 'release_id' => $releaseId, 'document_name' => $documentName]
|
||||
|
||||
Reference in New Issue
Block a user