New Backoffice: Fix total number of items (health checks, log viewer, packages) (#14003)

* Fix total number of items for health check controllers

* Fix total amount of items for log viewer controller

* Fixing AllMigrationStatusPackageController

* Fixing total items for package controllers

* Adding default implementation

* Update Nerdbank.GitVersioning dependency to 3.5.119

---------

Co-authored-by: Ronald Barendse <ronald@barend.se>
This commit is contained in:
Elitsa Marinovska
2023-03-24 11:47:59 +01:00
committed by GitHub
parent 91d4389d2c
commit af24f304be
15 changed files with 115 additions and 120 deletions

View File

@@ -38,7 +38,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="all" IsImplicitlyDefined="true" />
<PackageReference Include="Nerdbank.GitVersioning" Version="3.5.113" PrivateAssets="all" IsImplicitlyDefined="true" />
<PackageReference Include="Nerdbank.GitVersioning" Version="3.5.119" PrivateAssets="all" IsImplicitlyDefined="true" />
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.406" PrivateAssets="all" IsImplicitlyDefined="true" />
<PackageReference Include="Umbraco.Code" Version="2.0.0" PrivateAssets="all" IsImplicitlyDefined="true" />
<PackageReference Include="Umbraco.GitVersioning.Extensions" Version="0.2.0" PrivateAssets="all" IsImplicitlyDefined="true" />

View File

@@ -2,7 +2,6 @@ using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Umbraco.Cms.Api.Common.ViewModels.Pagination;
using Umbraco.Cms.Api.Management.Factories;
using Umbraco.Cms.Api.Management.Mapping.HealthCheck;
using Umbraco.Cms.Api.Management.ViewModels.HealthCheck;
using Umbraco.Cms.Core.Mapping;
@@ -32,11 +31,16 @@ public class AllHealthCheckGroupController : HealthCheckGroupControllerBase
[ProducesResponseType(typeof(PagedViewModel<HealthCheckGroupResponseModel>), StatusCodes.Status200OK)]
public async Task<ActionResult<PagedViewModel<HealthCheckGroupResponseModel>>> All(int skip = 0, int take = 100)
{
IEnumerable<IGrouping<string?, Core.HealthChecks.HealthCheck>> groups = _healthCheckGroupPresentationFactory
IGrouping<string?, Core.HealthChecks.HealthCheck>[] groups = _healthCheckGroupPresentationFactory
.CreateGroupingFromHealthCheckCollection()
.Skip(skip)
.Take(take);
.ToArray();
return await Task.FromResult(Ok(_umbracoMapper.Map<PagedViewModel<HealthCheckGroupResponseModel>>(groups)));
var viewModel = new PagedViewModel<HealthCheckGroupResponseModel>
{
Total = groups.Length,
Items = _umbracoMapper.MapEnumerable<IGrouping<string?, Core.HealthChecks.HealthCheck>, HealthCheckGroupResponseModel>(groups.Skip(skip).Take(take))
};
return await Task.FromResult(Ok(viewModel));
}
}

View File

@@ -55,7 +55,13 @@ public class AllLogViewerController : LogViewerControllerBase
if (logsAttempt.Success)
{
return Ok(_umbracoMapper.Map<PagedViewModel<LogMessageResponseModel>>(logsAttempt.Result));
var viewModel = new PagedViewModel<LogMessageResponseModel>
{
Total = logsAttempt.Result!.Total,
Items = _umbracoMapper.MapEnumerable<ILogEntry, LogMessageResponseModel>(logsAttempt.Result.Items)
};
return Ok(viewModel);
}
return LogViewerOperationStatusResult(logsAttempt.Status);

View File

@@ -7,15 +7,16 @@ using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Mapping;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Core.Services.OperationStatus;
using Umbraco.New.Cms.Core.Models;
namespace Umbraco.Cms.Api.Management.Controllers.LogViewer;
public class MessageTemplateLogViewerController : LogViewerControllerBase
public class AllMessageTemplateLogViewerController : LogViewerControllerBase
{
private readonly ILogViewerService _logViewerService;
private readonly IUmbracoMapper _umbracoMapper;
public MessageTemplateLogViewerController(ILogViewerService logViewerService, IUmbracoMapper umbracoMapper)
public AllMessageTemplateLogViewerController(ILogViewerService logViewerService, IUmbracoMapper umbracoMapper)
{
_logViewerService = logViewerService;
_umbracoMapper = umbracoMapper;
@@ -39,16 +40,17 @@ public class MessageTemplateLogViewerController : LogViewerControllerBase
DateTime? startDate = null,
DateTime? endDate = null)
{
Attempt<IEnumerable<LogTemplate>, LogViewerOperationStatus> messageTemplatesAttempt = await _logViewerService.GetMessageTemplatesAsync(startDate, endDate);
Attempt<PagedModel<LogTemplate>, LogViewerOperationStatus> messageTemplatesAttempt = await _logViewerService.GetMessageTemplatesAsync(startDate, endDate, skip, take);
if (messageTemplatesAttempt.Success)
{
IEnumerable<LogTemplate> messageTemplates = messageTemplatesAttempt
.Result
.Skip(skip)
.Take(take);
var viewModel = new PagedViewModel<LogTemplateResponseModel>
{
Total = messageTemplatesAttempt.Result.Total,
Items = _umbracoMapper.MapEnumerable<LogTemplate, LogTemplateResponseModel>(messageTemplatesAttempt.Result.Items)
};
return Ok(_umbracoMapper.Map<PagedViewModel<LogTemplateResponseModel>>(messageTemplates));
return Ok(viewModel);
}
return LogViewerOperationStatusResult(messageTemplatesAttempt.Status);

View File

@@ -30,11 +30,16 @@ public class AllSinkLevelLogViewerController : LogViewerControllerBase
[ProducesResponseType(typeof(PagedViewModel<LoggerResponseModel>), StatusCodes.Status200OK)]
public async Task<ActionResult<PagedViewModel<LoggerResponseModel>>> AllLogLevels(int skip = 0, int take = 100)
{
IEnumerable<KeyValuePair<string, LogLevel>> logLevels = _logViewerService
KeyValuePair<string, LogLevel>[] logLevels = _logViewerService
.GetLogLevelsFromSinks()
.Skip(skip)
.Take(take);
.ToArray();
return await Task.FromResult(Ok(_umbracoMapper.Map<PagedViewModel<LoggerResponseModel>>(logLevels)));
var viewModel = new PagedViewModel<LoggerResponseModel>
{
Total = logLevels.Length,
Items = _umbracoMapper.MapEnumerable<KeyValuePair<string, LogLevel>, LoggerResponseModel>(logLevels.Skip(skip).Take(take))
};
return await Task.FromResult(Ok(viewModel));
}
}

View File

@@ -5,6 +5,7 @@ using Umbraco.Cms.Api.Management.ViewModels.LogViewer;
using Umbraco.Cms.Core.Mapping;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Services;
using Umbraco.New.Cms.Core.Models;
namespace Umbraco.Cms.Api.Management.Controllers.LogViewer.SavedSearch;
@@ -30,8 +31,14 @@ public class AllSavedSearchLogViewerController : SavedSearchLogViewerControllerB
[ProducesResponseType(typeof(PagedViewModel<SavedLogSearchResponseModel>), StatusCodes.Status200OK)]
public async Task<ActionResult<PagedViewModel<SavedLogSearchResponseModel>>> AllSavedSearches(int skip = 0, int take = 100)
{
IEnumerable<ILogViewerQuery> savedLogQueries = (await _logViewerService.GetSavedLogQueriesAsync()).Skip(skip).Take(take);
PagedModel<ILogViewerQuery> savedLogQueries = await _logViewerService.GetSavedLogQueriesAsync(skip, take);
return Ok(_umbracoMapper.Map<PagedViewModel<SavedLogSearchResponseModel>>(savedLogQueries));
var viewModel = new PagedViewModel<SavedLogSearchResponseModel>
{
Total = savedLogQueries.Total,
Items = _umbracoMapper.MapEnumerable<ILogViewerQuery, SavedLogSearchResponseModel>(savedLogQueries.Items)
};
return Ok(viewModel);
}
}

View File

@@ -33,12 +33,12 @@ public class AllMigrationStatusPackageController : PackageControllerBase
{
PagedModel<InstalledPackage> migrationPlans = await _packagingService.GetInstalledPackagesFromMigrationPlansAsync(skip, take);
IEnumerable<PackageMigrationStatusResponseModel> viewModels = _umbracoMapper.MapEnumerable<InstalledPackage, PackageMigrationStatusResponseModel>(migrationPlans.Items);
return Ok(new PagedViewModel<PackageMigrationStatusResponseModel>()
var viewModel = new PagedViewModel<PackageMigrationStatusResponseModel>
{
Total = migrationPlans.Total,
Items = viewModels,
});
Items = _umbracoMapper.MapEnumerable<InstalledPackage, PackageMigrationStatusResponseModel>(migrationPlans.Items)
};
return Ok(viewModel);
}
}

View File

@@ -5,7 +5,7 @@ using Umbraco.Cms.Api.Management.ViewModels.Package;
using Umbraco.Cms.Core.Mapping;
using Umbraco.Cms.Core.Packaging;
using Umbraco.Cms.Core.Services;
using Umbraco.Extensions;
using Umbraco.New.Cms.Core.Models;
namespace Umbraco.Cms.Api.Management.Controllers.Package.Created;
@@ -31,12 +31,14 @@ public class AllCreatedPackageController : CreatedPackageControllerBase
[ProducesResponseType(typeof(PagedViewModel<PackageDefinitionResponseModel>), StatusCodes.Status200OK)]
public async Task<ActionResult<PagedViewModel<PackageDefinitionResponseModel>>> All(int skip = 0, int take = 100)
{
IEnumerable<PackageDefinition> createdPackages = _packagingService
.GetAllCreatedPackages()
.WhereNotNull()
.Skip(skip)
.Take(take);
PagedModel<PackageDefinition> createdPackages = await _packagingService.GetCreatedPackagesAsync(skip, take);
return await Task.FromResult(Ok(_umbracoMapper.Map<PagedViewModel<PackageDefinitionResponseModel>>(createdPackages)));
var viewModel = new PagedViewModel<PackageDefinitionResponseModel>
{
Total = createdPackages.Total,
Items = _umbracoMapper.MapEnumerable<PackageDefinition, PackageDefinitionResponseModel>(createdPackages.Items)
};
return await Task.FromResult(Ok(viewModel));
}
}

View File

@@ -1,6 +1,3 @@
using NPoco.FluentMappings;
using Umbraco.Cms.Api.Common.ViewModels.Pagination;
using Umbraco.Cms.Api.Management.Controllers.HealthCheck.Group;
using Umbraco.Cms.Api.Management.ViewModels.HealthCheck;
using Umbraco.Cms.Core.HealthChecks;
using Umbraco.Cms.Core.Mapping;
@@ -11,19 +8,18 @@ public class HealthCheckViewModelsMapDefinition : IMapDefinition
{
public void DefineMaps(IUmbracoMapper mapper)
{
mapper.Define<HealthCheckActionRequestModel, HealthCheckAction>((source, context) => new HealthCheckAction(), Map);
mapper.Define<HealthCheckAction, HealthCheckActionRequestModel>((source, context) => new HealthCheckActionRequestModel() { ValueRequired = false }, Map);
mapper.Define<HealthCheckStatus, HealthCheckResultResponseModel>((source, context) => new HealthCheckResultResponseModel() { Message = string.Empty }, Map);
mapper.Define<Core.HealthChecks.HealthCheck, HealthCheckViewModel>((source, context) => new HealthCheckViewModel() { Name = string.Empty }, Map);
mapper.Define<HealthCheckActionRequestModel, HealthCheckAction>((_, _) => new HealthCheckAction(), Map);
mapper.Define<HealthCheckAction, HealthCheckActionRequestModel>((_, _) => new HealthCheckActionRequestModel { ValueRequired = false }, Map);
mapper.Define<HealthCheckStatus, HealthCheckResultResponseModel>((_, _) => new HealthCheckResultResponseModel { Message = string.Empty }, Map);
mapper.Define<Core.HealthChecks.HealthCheck, HealthCheckViewModel>((_, _) => new HealthCheckViewModel { Name = string.Empty }, Map);
mapper.Define<IGrouping<string?, Core.HealthChecks.HealthCheck>, HealthCheckGroupPresentationModel>(
(source, context) => new HealthCheckGroupPresentationModel()
(_, _) => new HealthCheckGroupPresentationModel
{
Name = string.Empty,
Checks = new List<HealthCheckViewModel>()
},
Map);
mapper.Define<IGrouping<string?, Core.HealthChecks.HealthCheck>, HealthCheckGroupResponseModel>((source, context) => new HealthCheckGroupResponseModel() { Name = string.Empty }, Map);
mapper.Define<IEnumerable<IGrouping<string?, Core.HealthChecks.HealthCheck>>, PagedViewModel<HealthCheckGroupResponseModel>>((source, context) => new PagedViewModel<HealthCheckGroupResponseModel>(), Map);
mapper.Define<IGrouping<string?, Core.HealthChecks.HealthCheck>, HealthCheckGroupResponseModel>((_, _) => new HealthCheckGroupResponseModel { Name = string.Empty }, Map);
}
// Umbraco.Code.MapAll -ActionParameters
@@ -92,11 +88,4 @@ public class HealthCheckViewModelsMapDefinition : IMapDefinition
target.Name = source.Key;
}
}
// Umbraco.Code.MapAll
private static void Map(IEnumerable<IGrouping<string?, Core.HealthChecks.HealthCheck>> source, PagedViewModel<HealthCheckGroupResponseModel> target, MapperContext context)
{
target.Items = context.MapEnumerable<IGrouping<string?, Core.HealthChecks.HealthCheck>, HealthCheckGroupResponseModel>(source);
target.Total = source.Count();
}
}

View File

@@ -1,10 +1,8 @@
using Umbraco.Cms.Api.Common.ViewModels.Pagination;
using Umbraco.Cms.Api.Management.ViewModels.LogViewer;
using Umbraco.Cms.Core.Logging;
using Umbraco.Cms.Core.Logging.Viewer;
using Umbraco.Cms.Core.Mapping;
using Umbraco.Cms.Core.Models;
using Umbraco.New.Cms.Core.Models;
namespace Umbraco.Cms.Api.Management.Mapping.LogViewer;
@@ -12,23 +10,19 @@ public class LogViewerViewModelMapDefinition : IMapDefinition
{
public void DefineMaps(IUmbracoMapper mapper)
{
mapper.Define<LogLevelCounts, LogLevelCountsReponseModel>((source, context) => new LogLevelCountsReponseModel(), Map);
mapper.Define<LogLevelCounts, LogLevelCountsReponseModel>((_, _) => new LogLevelCountsReponseModel(), Map);
mapper.Define<KeyValuePair<string, string?>, LogMessagePropertyPresentationModel>(
(source, context) => new LogMessagePropertyPresentationModel() { Name = string.Empty }, Map);
mapper.Define<KeyValuePair<string, LogLevel>, LoggerResponseModel>((source, context) => new LoggerResponseModel() { Name = string.Empty }, Map);
(_, _) => new LogMessagePropertyPresentationModel { Name = string.Empty }, Map);
mapper.Define<KeyValuePair<string, LogLevel>, LoggerResponseModel>((_, _) => new LoggerResponseModel { Name = string.Empty }, Map);
mapper.Define<ILogViewerQuery, SavedLogSearchResponseModel>(
(source, context) => new SavedLogSearchResponseModel()
(_, _) => new SavedLogSearchResponseModel
{
Name = string.Empty,
Query = string.Empty
},
Map);
mapper.Define<LogTemplate, LogTemplateResponseModel>((source, context) => new LogTemplateResponseModel(), Map);
mapper.Define<ILogEntry, LogMessageResponseModel>((source, context) => new LogMessageResponseModel(), Map);
mapper.Define<IEnumerable<KeyValuePair<string, LogLevel>>, PagedViewModel<LoggerResponseModel>>((source, context) => new PagedViewModel<LoggerResponseModel>(), Map);
mapper.Define<IEnumerable<ILogViewerQuery>, PagedViewModel<SavedLogSearchResponseModel>>((source, context) => new PagedViewModel<SavedLogSearchResponseModel>(), Map);
mapper.Define<IEnumerable<LogTemplate>, PagedViewModel<LogTemplateResponseModel>>((source, context) => new PagedViewModel<LogTemplateResponseModel>(), Map);
mapper.Define<PagedModel<ILogEntry>, PagedViewModel<LogMessageResponseModel>>((source, context) => new PagedViewModel<LogMessageResponseModel>(), Map);
mapper.Define<LogTemplate, LogTemplateResponseModel>((_, _) => new LogTemplateResponseModel(), Map);
mapper.Define<ILogEntry, LogMessageResponseModel>((_, _) => new LogMessageResponseModel(), Map);
}
// Umbraco.Code.MapAll
@@ -80,32 +74,4 @@ public class LogViewerViewModelMapDefinition : IMapDefinition
target.Properties = context.MapEnumerable<KeyValuePair<string, string?>, LogMessagePropertyPresentationModel>(source.Properties);
target.Exception = source.Exception;
}
// Umbraco.Code.MapAll
private static void Map(IEnumerable<KeyValuePair<string, LogLevel>> source, PagedViewModel<LoggerResponseModel> target, MapperContext context)
{
target.Items = context.MapEnumerable<KeyValuePair<string, LogLevel>, LoggerResponseModel>(source);
target.Total = source.Count();
}
// Umbraco.Code.MapAll
private static void Map(IEnumerable<ILogViewerQuery> source, PagedViewModel<SavedLogSearchResponseModel> target, MapperContext context)
{
target.Items = context.MapEnumerable<ILogViewerQuery, SavedLogSearchResponseModel>(source);
target.Total = source.Count();
}
// Umbraco.Code.MapAll
private static void Map(IEnumerable<LogTemplate> source, PagedViewModel<LogTemplateResponseModel> target, MapperContext context)
{
target.Items = context.MapEnumerable<LogTemplate, LogTemplateResponseModel>(source);
target.Total = source.Count();
}
// Umbraco.Code.MapAll
private static void Map(PagedModel<ILogEntry> source, PagedViewModel<LogMessageResponseModel> target, MapperContext context)
{
target.Items = context.MapEnumerable<ILogEntry, LogMessageResponseModel>(source.Items);
target.Total = source.Total;
}
}

View File

@@ -1,4 +1,3 @@
using Umbraco.Cms.Api.Common.ViewModels.Pagination;
using Umbraco.Cms.Api.Management.ViewModels.Package;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Mapping;
@@ -12,14 +11,10 @@ public class PackageViewModelMapDefinition : IMapDefinition
{
mapper.Define<PackageModelBase, PackageDefinition>((_, _) => new PackageDefinition(), Map);
mapper.Define<PackageDefinition, PackageDefinitionResponseModel>(
(_, _) => new PackageDefinitionResponseModel
{
Name = string.Empty,
PackagePath = string.Empty
},
(_, _) => new PackageDefinitionResponseModel { Name = string.Empty, PackagePath = string.Empty },
Map);
mapper.Define<InstalledPackage, PackageMigrationStatusResponseModel>((_, _) => new PackageMigrationStatusResponseModel { PackageName = string.Empty }, Map);
mapper.Define<IEnumerable<PackageDefinition>, PagedViewModel<PackageDefinitionResponseModel>>((_, _) => new PagedViewModel<PackageDefinitionResponseModel>(), Map);
mapper.Define<InstalledPackage, PackageMigrationStatusResponseModel>(
(_, _) => new PackageMigrationStatusResponseModel { PackageName = string.Empty }, Map);
}
// Umbraco.Code.MapAll -Id -PackageId -PackagePath -Macros
@@ -72,12 +67,4 @@ public class PackageViewModelMapDefinition : IMapDefinition
target.HasPendingMigrations = source.HasPendingMigrations;
}
// Umbraco.Code.MapAll
private static void Map(IEnumerable<PackageDefinition> source, PagedViewModel<PackageDefinitionResponseModel> target, MapperContext context)
{
PackageDefinition[] definitions = source.ToArray();
target.Items = context.MapEnumerable<PackageDefinition, PackageDefinitionResponseModel>(definitions);
target.Total = definitions.Length;
}
}

View File

@@ -32,9 +32,11 @@ public interface ILogViewerService : IService
string[]? logLevels = null);
/// <summary>
/// Get all saved log queries from your chosen data source.
/// Get all saved log queries from your chosen data source as a paged model.
/// </summary>
Task<IReadOnlyList<ILogViewerQuery>> GetSavedLogQueriesAsync();
/// <param name="skip">The amount of items to skip.</param>
/// <param name="take">The amount of items to take.</param>
Task<PagedModel<ILogViewerQuery>> GetSavedLogQueriesAsync(int skip, int take);
/// <summary>
/// Gets a saved log query by name from your chosen data source.
@@ -74,13 +76,15 @@ public interface ILogViewerService : IService
Task<Attempt<LogLevelCounts?, LogViewerOperationStatus>> GetLogLevelCountsAsync(DateTime? startDate, DateTime? endDate);
/// <summary>
/// Returns a list of all unique message templates and their counts.
/// Returns a paged model of all unique message templates and their counts.
/// The attempt will fail if the log files for the given
/// time period are too large (more than 1GB).
/// </summary>
/// <param name="startDate">The start date for the date range.</param>
/// <param name="endDate">The end date for the date range.</param>
Task<Attempt<IEnumerable<LogTemplate>, LogViewerOperationStatus>> GetMessageTemplatesAsync(DateTime? startDate, DateTime? endDate);
/// <param name="skip">The amount of items to skip.</param>
/// <param name="take">The amount of items to take.</param>
Task<Attempt<PagedModel<LogTemplate>, LogViewerOperationStatus>> GetMessageTemplatesAsync(DateTime? startDate, DateTime? endDate, int skip, int take);
/// <summary>
/// Get the log level values of the global minimum and the UmbracoFile one from the config file.

View File

@@ -2,6 +2,7 @@ using System.Xml.Linq;
using Umbraco.Cms.Core.Models.Packaging;
using Umbraco.Cms.Core.Packaging;
using Umbraco.Cms.Core.Services.OperationStatus;
using Umbraco.Extensions;
using Umbraco.New.Cms.Core.Models;
namespace Umbraco.Cms.Core.Services;
@@ -37,12 +38,21 @@ public interface IPackagingService : IService
InstalledPackage? GetInstalledPackageByName(string packageName);
/// <summary>
/// Returns the created packages
/// </summary>
/// <returns></returns>
[Obsolete("Use GetCreatedPackagesAsync instead. Scheduled for removal in Umbraco 15.")]
IEnumerable<PackageDefinition?> GetAllCreatedPackages();
/// <summary>
/// Returns the created packages as a paged model.
/// </summary>
/// <param name="skip">The amount of items to skip.</param>
/// <param name="take">The amount of items to take.</param>
Task<PagedModel<PackageDefinition>> GetCreatedPackagesAsync(int skip, int take)
{
PackageDefinition[] packages = GetAllCreatedPackages().WhereNotNull().ToArray();
var pagedModel = new PagedModel<PackageDefinition>(packages.Length, packages.Skip(skip).Take(take));
return Task.FromResult(pagedModel);
}
/// <summary>
/// Returns a created package by id
/// </summary>

View File

@@ -66,10 +66,12 @@ public class LogViewerService : ILogViewerService
}
/// <inheritdoc/>
public async Task<IReadOnlyList<ILogViewerQuery>> GetSavedLogQueriesAsync()
public async Task<PagedModel<ILogViewerQuery>> GetSavedLogQueriesAsync(int skip, int take)
{
using ICoreScope scope = _provider.CreateCoreScope(autoComplete: true);
return await Task.FromResult(_logViewerQueryRepository.GetMany().ToList());
ILogViewerQuery[] savedLogQueries = _logViewerQueryRepository.GetMany().ToArray();
var pagedModel = new PagedModel<ILogViewerQuery>(savedLogQueries.Length, savedLogQueries.Skip(skip).Take(take));
return await Task.FromResult(pagedModel);
}
/// <inheritdoc/>
@@ -146,21 +148,23 @@ public class LogViewerService : ILogViewerService
}
/// <inheritdoc/>
public async Task<Attempt<IEnumerable<LogTemplate>, LogViewerOperationStatus>> GetMessageTemplatesAsync(DateTime? startDate, DateTime? endDate)
public async Task<Attempt<PagedModel<LogTemplate>, LogViewerOperationStatus>> GetMessageTemplatesAsync(DateTime? startDate, DateTime? endDate, int skip, int take)
{
LogTimePeriod logTimePeriod = GetTimePeriod(startDate, endDate);
// We will need to stop the request if trying to do this on a 1GB file
if (CanViewLogs(logTimePeriod) == false)
{
return Attempt.FailWithStatus(
return Attempt.FailWithStatus<PagedModel<LogTemplate>, LogViewerOperationStatus>(
LogViewerOperationStatus.CancelledByLogsSizeValidation,
Enumerable.Empty<LogTemplate>());
null!);
}
LogTemplate[] messageTemplates = _logViewer.GetMessageTemplates(logTimePeriod).ToArray();
return Attempt.SucceedWithStatus(
LogViewerOperationStatus.Success,
_logViewer.GetMessageTemplates(logTimePeriod));
new PagedModel<LogTemplate>(messageTemplates.Length, messageTemplates.Skip(skip).Take(take)));
}
/// <inheritdoc/>

View File

@@ -151,8 +151,17 @@ public class PackagingService : IPackagingService
return Attempt.SucceedWithStatus<PackageDefinition?, PackageOperationStatus>(PackageOperationStatus.Success, package);
}
[Obsolete("Use GetCreatedPackagesAsync instead. Scheduled for removal in Umbraco 15.")]
public IEnumerable<PackageDefinition?> GetAllCreatedPackages() => _createdPackages.GetAll();
/// <inheritdoc/>
public async Task<PagedModel<PackageDefinition>> GetCreatedPackagesAsync(int skip, int take)
{
PackageDefinition[] packages = _createdPackages.GetAll().WhereNotNull().ToArray();
var pagedModel = new PagedModel<PackageDefinition>(packages.Length, packages.Skip(skip).Take(take));
return await Task.FromResult(pagedModel);
}
public PackageDefinition? GetCreatedPackageById(int id) => _createdPackages.GetById(id);
/// <inheritdoc/>