diff --git a/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/JsonFieldModel.cs b/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/JsonFieldModel.cs index 729e6ab0c..3a7a90900 100644 --- a/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/JsonFieldModel.cs +++ b/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/JsonFieldModel.cs @@ -44,7 +44,7 @@ namespace Squidex.Domain.Apps.Core.Schemas.Json if (Properties is ArrayFieldProperties arrayProperties) { - var nested = Children?.ToArray(n => n.ToNestedField()) ?? Array.Empty(); + var nested = Children?.Map(n => n.ToNestedField()) ?? Array.Empty(); return new ArrayField(Id, Name, partitioning, nested, arrayProperties, this); } diff --git a/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/JsonSchemaModel.cs b/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/JsonSchemaModel.cs index 83196b881..54c31c88f 100644 --- a/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/JsonSchemaModel.cs +++ b/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/JsonSchemaModel.cs @@ -49,7 +49,7 @@ namespace Squidex.Domain.Apps.Core.Schemas.Json SimpleMapper.Map(schema, this); Fields = - schema.Fields.ToArray(x => + schema.Fields.Select(x => new JsonFieldModel { Id = x.Id, @@ -60,7 +60,7 @@ namespace Squidex.Domain.Apps.Core.Schemas.Json IsDisabled = x.IsDisabled, Partitioning = x.Partitioning.Key, Properties = x.RawProperties - }); + }).ToArray(); PreviewUrls = schema.PreviewUrls.ToDictionary(x => x.Key, x => x.Value); } @@ -69,7 +69,7 @@ namespace Squidex.Domain.Apps.Core.Schemas.Json { if (field is ArrayField arrayField) { - return arrayField.Fields.ToArray(x => + return arrayField.Fields.Select(x => new JsonNestedFieldModel { Id = x.Id, @@ -78,7 +78,7 @@ namespace Squidex.Domain.Apps.Core.Schemas.Json IsLocked = x.IsLocked, IsDisabled = x.IsDisabled, Properties = x.RawProperties - }); + }).ToArray(); } return null; @@ -86,7 +86,7 @@ namespace Squidex.Domain.Apps.Core.Schemas.Json public Schema ToSchema() { - var fields = Fields.ToArray(f => f.ToField()) ?? Array.Empty(); + var fields = Fields.Map(f => f.ToField()) ?? Array.Empty(); var schema = new Schema(Name, fields, Properties, IsPublished, IsSingleton); diff --git a/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/CachingGraphQLService.cs b/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/CachingGraphQLService.cs index 2d3d5e353..1fa48486c 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/CachingGraphQLService.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/CachingGraphQLService.cs @@ -40,7 +40,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL var result = await Task.WhenAll(queries.Select(q => QueryInternalAsync(model, ctx, q))); - return (result.Any(x => x.HasError), result.ToArray(x => x.Response)); + return (result.Any(x => x.HasError), result.Map(x => x.Response)); } public async Task<(bool HasError, object Response)> QueryAsync(Context context, GraphQLQuery query) diff --git a/src/Squidex.Infrastructure/CollectionExtensions.cs b/src/Squidex.Infrastructure/CollectionExtensions.cs index a8f44e515..248197dc1 100644 --- a/src/Squidex.Infrastructure/CollectionExtensions.cs +++ b/src/Squidex.Infrastructure/CollectionExtensions.cs @@ -53,7 +53,7 @@ namespace Squidex.Infrastructure return source.Concat(Enumerable.Repeat(value, 1)); } - public static TResult[] ToArray(this T[] value, Func convert) + public static TResult[] Map(this T[] value, Func convert) { var result = new TResult[value.Length]; @@ -65,20 +65,6 @@ namespace Squidex.Infrastructure return result; } - public static TResult[] ToArray(this IReadOnlyCollection value, Func convert) - { - var result = new TResult[value.Count]; - var i = 0; - - foreach (var v in value) - { - result[i] = convert(v); - i++; - } - - return result; - } - public static int SequentialHashCode(this IEnumerable collection) { return collection.SequentialHashCode(EqualityComparer.Default); diff --git a/src/Squidex.Infrastructure/States/Persistence{TSnapshot,TKey}.cs b/src/Squidex.Infrastructure/States/Persistence{TSnapshot,TKey}.cs index 48a30f22c..9d684fc59 100644 --- a/src/Squidex.Infrastructure/States/Persistence{TSnapshot,TKey}.cs +++ b/src/Squidex.Infrastructure/States/Persistence{TSnapshot,TKey}.cs @@ -190,7 +190,7 @@ namespace Squidex.Infrastructure.States private EventData[] GetEventData(Envelope[] events, Guid commitId) { - return events.ToArray(x => eventDataFormatter.ToEventData(x, commitId, true)); + return events.Map(x => eventDataFormatter.ToEventData(x, commitId, true)); } private string GetStreamName() diff --git a/src/Squidex.Web/ApiExceptionFilterAttribute.cs b/src/Squidex.Web/ApiExceptionFilterAttribute.cs index 3e195c0be..ce1b22b55 100644 --- a/src/Squidex.Web/ApiExceptionFilterAttribute.cs +++ b/src/Squidex.Web/ApiExceptionFilterAttribute.cs @@ -93,7 +93,7 @@ namespace Squidex.Web private static string[] ToDetails(ValidationException ex) { - return ex.Errors?.ToArray(e => + return ex.Errors?.Select(e => { if (e.PropertyNames?.Any() == true) { @@ -103,7 +103,7 @@ namespace Squidex.Web { return e.Message; } - }); + }).ToArray(); } } } diff --git a/src/Squidex/Areas/Api/Controllers/Apps/AppsController.cs b/src/Squidex/Areas/Api/Controllers/Apps/AppsController.cs index 6529dd4e5..8a1b950df 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/AppsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/AppsController.cs @@ -5,6 +5,7 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Net.Http.Headers; @@ -64,7 +65,7 @@ namespace Squidex.Areas.Api.Controllers.Apps var response = Deferred.Response(() => { - return apps.ToArray(a => AppDto.FromApp(a, userOrClientId, userPermissions, appPlansProvider, this)); + return apps.Select(a => AppDto.FromApp(a, userOrClientId, userPermissions, appPlansProvider, this)).ToArray(); }); Response.Headers[HeaderNames.ETag] = apps.ToEtag(); diff --git a/src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorsDto.cs b/src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorsDto.cs index 9d8baf5e3..b9e264241 100644 --- a/src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorsDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Apps/Models/ContributorsDto.cs @@ -6,6 +6,7 @@ // ========================================================================== using System.ComponentModel.DataAnnotations; +using System.Linq; using Newtonsoft.Json; using Squidex.Domain.Apps.Entities.Apps; using Squidex.Domain.Apps.Entities.Apps.Services; @@ -36,11 +37,9 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models public static ContributorsDto FromApp(IAppEntity app, IAppPlansProvider plans, ApiController controller, bool isInvited) { - var contributors = app.Contributors.ToArray(x => ContributorDto.FromIdAndRole(x.Key, x.Value, controller, app.Name)); - var result = new ContributorsDto { - Items = contributors, + Items = app.Contributors.Select(x => ContributorDto.FromIdAndRole(x.Key, x.Value, controller, app.Name)).ToArray(), }; if (isInvited) diff --git a/src/Squidex/WebStartup.cs b/src/Squidex/WebStartup.cs index 6bc48e67d..741aa75b0 100644 --- a/src/Squidex/WebStartup.cs +++ b/src/Squidex/WebStartup.cs @@ -35,6 +35,7 @@ using Squidex.Infrastructure.Translations; using Squidex.Pipeline.Plugins; using Squidex.Pipeline.Robots; using Squidex.Web; +using Squidex.Web.Pipeline; namespace Squidex {