using Umbraco.Cms.Core.PublishedCache;
using Umbraco.Cms.Infrastructure.PublishedCache.Persistence;
namespace Umbraco.Cms.Infrastructure.PublishedCache
{
///
/// Generates a status report for
///
internal class PublishedSnapshotStatus : IPublishedSnapshotStatus
{
private readonly PublishedSnapshotService _service;
private readonly INuCacheContentService _publishedContentService;
public PublishedSnapshotStatus(IPublishedSnapshotService service, INuCacheContentService publishedContentService)
{
_service = service as PublishedSnapshotService;
_publishedContentService = publishedContentService;
}
///
public virtual string StatusUrl => "views/dashboard/settings/publishedsnapshotcache.html";
///
public string GetStatus()
{
if (_service == null)
{
return $"The current {typeof(IPublishedSnapshotService)} is not the default type. A status cannot be determined.";
}
// TODO: This should be private
_service.EnsureCaches();
var dbCacheIsOk = _publishedContentService.VerifyContentDbCache()
&& _publishedContentService.VerifyMediaDbCache()
&& _publishedContentService.VerifyMemberDbCache()
? "ok"
: "NOT ok (rebuild?)";
ContentStore contentStore = _service.GetContentStore();
ContentStore mediaStore = _service.GetMediaStore();
var contentStoreGen = contentStore.GenCount;
var mediaStoreGen = mediaStore.GenCount;
var contentStoreSnap = contentStore.SnapCount;
var mediaStoreSnap = mediaStore.SnapCount;
var contentStoreCount = contentStore.Count;
var mediaStoreCount = mediaStore.Count;
string contentStoreCountPlural = contentStoreCount > 1 ? "s" : string.Empty;
string contentStoreGenPlural = contentStoreGen > 1 ? "s" : string.Empty;
string contentStoreSnapPlural = contentStoreSnap > 1 ? "s" : string.Empty;
string mediaStoreCountPlural = mediaStoreCount > 1 ? "s" : string.Empty;
string mediaStoreGenPlural = mediaStoreGen > 1 ? "s" : string.Empty;
string mediaStoreSnapPlural = mediaStoreSnap > 1 ? "s" : string.Empty;
return $" Database cache is {dbCacheIsOk}. ContentStore contains {contentStoreCount} item{contentStoreCountPlural} and has {contentStoreGen} generation{contentStoreGenPlural} and {contentStoreSnap} snapshot{contentStoreSnapPlural}. MediaStore contains {mediaStoreCount} item{mediaStoreCountPlural} and has {mediaStoreGen} generation{mediaStoreGenPlural} and {mediaStoreSnap} snapshot{mediaStoreSnapPlural}.";
}
}
}