diff --git a/src/Squidex.Domain.Apps.Entities/Assets/AssetCommandMiddleware.cs b/src/Squidex.Domain.Apps.Entities/Assets/AssetCommandMiddleware.cs index 6d27c29c2..fe8da3714 100644 --- a/src/Squidex.Domain.Apps.Entities/Assets/AssetCommandMiddleware.cs +++ b/src/Squidex.Domain.Apps.Entities/Assets/AssetCommandMiddleware.cs @@ -85,7 +85,7 @@ namespace Squidex.Domain.Apps.Entities.Assets await HandleCoreAsync(context, next); - var asset = context.PlainResult as IAssetEntityEnriched; + var asset = context.PlainResult as IEnrichedAssetEntity; context.Complete(new AssetCreatedResult(asset, false)); @@ -131,7 +131,7 @@ namespace Squidex.Domain.Apps.Entities.Assets { await base.HandleAsync(context, next); - if (context.PlainResult is IAssetEntity asset && !(context.PlainResult is IAssetEntityEnriched)) + if (context.PlainResult is IAssetEntity asset && !(context.PlainResult is IEnrichedAssetEntity)) { var enriched = await assetEnricher.EnrichAsync(asset); diff --git a/src/Squidex.Domain.Apps.Entities/Assets/AssetCreatedResult.cs b/src/Squidex.Domain.Apps.Entities/Assets/AssetCreatedResult.cs index c87c58260..aa932bf36 100644 --- a/src/Squidex.Domain.Apps.Entities/Assets/AssetCreatedResult.cs +++ b/src/Squidex.Domain.Apps.Entities/Assets/AssetCreatedResult.cs @@ -9,11 +9,11 @@ namespace Squidex.Domain.Apps.Entities.Assets { public sealed class AssetCreatedResult { - public IAssetEntityEnriched Asset { get; } + public IEnrichedAssetEntity Asset { get; } public bool IsDuplicate { get; } - public AssetCreatedResult(IAssetEntityEnriched asset, bool isDuplicate) + public AssetCreatedResult(IEnrichedAssetEntity asset, bool isDuplicate) { Asset = asset; diff --git a/src/Squidex.Domain.Apps.Entities/Assets/AssetEnricher.cs b/src/Squidex.Domain.Apps.Entities/Assets/AssetEnricher.cs index 56d660b8c..3a1b802e8 100644 --- a/src/Squidex.Domain.Apps.Entities/Assets/AssetEnricher.cs +++ b/src/Squidex.Domain.Apps.Entities/Assets/AssetEnricher.cs @@ -26,7 +26,7 @@ namespace Squidex.Domain.Apps.Entities.Assets this.tagService = tagService; } - public async Task EnrichAsync(IAssetEntity asset) + public async Task EnrichAsync(IAssetEntity asset) { Guard.NotNull(asset, nameof(asset)); @@ -35,13 +35,13 @@ namespace Squidex.Domain.Apps.Entities.Assets return enriched[0]; } - public async Task> EnrichAsync(IEnumerable assets) + public async Task> EnrichAsync(IEnumerable assets) { Guard.NotNull(assets, nameof(assets)); using (Profiler.TraceMethod()) { - var results = new List(); + var results = new List(); foreach (var group in assets.GroupBy(x => x.AppId.Id)) { diff --git a/src/Squidex.Domain.Apps.Entities/Assets/AssetEntity.cs b/src/Squidex.Domain.Apps.Entities/Assets/AssetEntity.cs index 1d2904eca..150e53b78 100644 --- a/src/Squidex.Domain.Apps.Entities/Assets/AssetEntity.cs +++ b/src/Squidex.Domain.Apps.Entities/Assets/AssetEntity.cs @@ -12,7 +12,7 @@ using Squidex.Infrastructure; namespace Squidex.Domain.Apps.Entities.Assets { - public sealed class AssetEntity : IAssetEntityEnriched + public sealed class AssetEntity : IEnrichedAssetEntity { public NamedId AppId { get; set; } diff --git a/src/Squidex.Domain.Apps.Entities/Assets/AssetQueryService.cs b/src/Squidex.Domain.Apps.Entities/Assets/AssetQueryService.cs index 07e2c0da8..29d6b28e9 100644 --- a/src/Squidex.Domain.Apps.Entities/Assets/AssetQueryService.cs +++ b/src/Squidex.Domain.Apps.Entities/Assets/AssetQueryService.cs @@ -49,7 +49,7 @@ namespace Squidex.Domain.Apps.Entities.Assets this.options = options.Value; } - public async Task FindAssetAsync( Guid id) + public async Task FindAssetAsync( Guid id) { var asset = await assetRepository.FindAssetAsync(id); @@ -61,7 +61,7 @@ namespace Squidex.Domain.Apps.Entities.Assets return null; } - public async Task> QueryByHashAsync(Guid appId, string hash) + public async Task> QueryByHashAsync(Guid appId, string hash) { Guard.NotNull(hash, nameof(hash)); @@ -70,7 +70,7 @@ namespace Squidex.Domain.Apps.Entities.Assets return await assetEnricher.EnrichAsync(assets); } - public async Task> QueryAsync(QueryContext context, Q query) + public async Task> QueryAsync(QueryContext context, Q query) { Guard.NotNull(context, nameof(context)); Guard.NotNull(query, nameof(query)); diff --git a/src/Squidex.Domain.Apps.Entities/Assets/IAssetEnricher.cs b/src/Squidex.Domain.Apps.Entities/Assets/IAssetEnricher.cs index 8c485c234..1807af316 100644 --- a/src/Squidex.Domain.Apps.Entities/Assets/IAssetEnricher.cs +++ b/src/Squidex.Domain.Apps.Entities/Assets/IAssetEnricher.cs @@ -12,8 +12,8 @@ namespace Squidex.Domain.Apps.Entities.Assets { public interface IAssetEnricher { - Task EnrichAsync(IAssetEntity asset); + Task EnrichAsync(IAssetEntity asset); - Task> EnrichAsync(IEnumerable assets); + Task> EnrichAsync(IEnumerable assets); } } \ No newline at end of file diff --git a/src/Squidex.Domain.Apps.Entities/Assets/IAssetQueryService.cs b/src/Squidex.Domain.Apps.Entities/Assets/IAssetQueryService.cs index 5e7ce35f0..a186e376c 100644 --- a/src/Squidex.Domain.Apps.Entities/Assets/IAssetQueryService.cs +++ b/src/Squidex.Domain.Apps.Entities/Assets/IAssetQueryService.cs @@ -16,10 +16,10 @@ namespace Squidex.Domain.Apps.Entities.Assets { int DefaultPageSizeGraphQl { get; } - Task> QueryByHashAsync(Guid appId, string hash); + Task> QueryByHashAsync(Guid appId, string hash); - Task> QueryAsync(QueryContext contex, Q query); + Task> QueryAsync(QueryContext contex, Q query); - Task FindAssetAsync(Guid id); + Task FindAssetAsync(Guid id); } } diff --git a/src/Squidex.Domain.Apps.Entities/Assets/IAssetEntityEnriched.cs b/src/Squidex.Domain.Apps.Entities/Assets/IEnrichedAssetEntity.cs similarity index 89% rename from src/Squidex.Domain.Apps.Entities/Assets/IAssetEntityEnriched.cs rename to src/Squidex.Domain.Apps.Entities/Assets/IEnrichedAssetEntity.cs index 53bbf6249..eab0cde16 100644 --- a/src/Squidex.Domain.Apps.Entities/Assets/IAssetEntityEnriched.cs +++ b/src/Squidex.Domain.Apps.Entities/Assets/IEnrichedAssetEntity.cs @@ -9,7 +9,7 @@ using System.Collections.Generic; namespace Squidex.Domain.Apps.Entities.Assets { - public interface IAssetEntityEnriched : IAssetEntity + public interface IEnrichedAssetEntity : IAssetEntity { HashSet TagNames { get; } } diff --git a/src/Squidex.Domain.Apps.Entities/Contents/ContentCommandMiddleware.cs b/src/Squidex.Domain.Apps.Entities/Contents/ContentCommandMiddleware.cs index eafb420de..d72e3eee1 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/ContentCommandMiddleware.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/ContentCommandMiddleware.cs @@ -30,7 +30,7 @@ namespace Squidex.Domain.Apps.Entities.Contents { await base.HandleAsync(context, next); - if (context.PlainResult is IContentEntity content) + if (context.PlainResult is IContentEntity content && !(context.PlainResult is IEnrichedContentEntity)) { var enriched = await contentEnricher.EnrichAsync(content); diff --git a/src/Squidex.Domain.Apps.Entities/Contents/ContentEnricher.cs b/src/Squidex.Domain.Apps.Entities/Contents/ContentEnricher.cs index c4363c9ea..e87aada08 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/ContentEnricher.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/ContentEnricher.cs @@ -26,7 +26,7 @@ namespace Squidex.Domain.Apps.Entities.Contents this.contentWorkflow = contentWorkflow; } - public async Task EnrichAsync(IContentEntity content) + public async Task EnrichAsync(IContentEntity content) { Guard.NotNull(content, nameof(content)); @@ -35,7 +35,7 @@ namespace Squidex.Domain.Apps.Entities.Contents return enriched[0]; } - public async Task> EnrichAsync(IEnumerable contents) + public async Task> EnrichAsync(IEnumerable contents) { Guard.NotNull(contents, nameof(contents)); diff --git a/src/Squidex.Domain.Apps.Entities/Contents/ContentEntity.cs b/src/Squidex.Domain.Apps.Entities/Contents/ContentEntity.cs index 4be05e9da..2e9f92115 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/ContentEntity.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/ContentEntity.cs @@ -12,7 +12,7 @@ using Squidex.Infrastructure; namespace Squidex.Domain.Apps.Entities.Contents { - public sealed class ContentEntity : IContentEntityEnriched + public sealed class ContentEntity : IEnrichedContentEntity { public Guid Id { get; set; } diff --git a/src/Squidex.Domain.Apps.Entities/Contents/ContentQueryService.cs b/src/Squidex.Domain.Apps.Entities/Contents/ContentQueryService.cs index 8d2deb6ad..88d8907be 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/ContentQueryService.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/ContentQueryService.cs @@ -34,7 +34,7 @@ namespace Squidex.Domain.Apps.Entities.Contents public sealed class ContentQueryService : IContentQueryService { private static readonly Status[] StatusPublishedOnly = { Status.Published }; - private static readonly IResultList EmptyContents = ResultList.CreateFrom(0); + private static readonly IResultList EmptyContents = ResultList.CreateFrom(0); private readonly IAppProvider appProvider; private readonly IAssetUrlGenerator assetUrlGenerator; private readonly IContentEnricher contentEnricher; @@ -78,7 +78,7 @@ namespace Squidex.Domain.Apps.Entities.Contents this.scriptEngine = scriptEngine; } - public async Task FindContentAsync(QueryContext context, string schemaIdOrName, Guid id, long version = -1) + public async Task FindContentAsync(QueryContext context, string schemaIdOrName, Guid id, long version = -1) { Guard.NotNull(context, nameof(context)); @@ -108,7 +108,7 @@ namespace Squidex.Domain.Apps.Entities.Contents } } - public async Task> QueryAsync(QueryContext context, string schemaIdOrName, Q query) + public async Task> QueryAsync(QueryContext context, string schemaIdOrName, Q query) { Guard.NotNull(context, nameof(context)); @@ -133,7 +133,7 @@ namespace Squidex.Domain.Apps.Entities.Contents } } - public async Task> QueryAsync(QueryContext context, IReadOnlyList ids) + public async Task> QueryAsync(QueryContext context, IReadOnlyList ids) { Guard.NotNull(context, nameof(context)); @@ -144,7 +144,7 @@ namespace Squidex.Domain.Apps.Entities.Contents return EmptyContents; } - var results = new List(); + var results = new List(); var contents = await QueryCoreAsync(context, ids); @@ -166,25 +166,25 @@ namespace Squidex.Domain.Apps.Entities.Contents } } - private async Task> TransformAsync(QueryContext context, ISchemaEntity schema, IResultList contents) + private async Task> TransformAsync(QueryContext context, ISchemaEntity schema, IResultList contents) { var transformed = await TransformCoreAsync(context, schema, contents); return ResultList.Create(contents.Total, transformed); } - private async Task TransformAsync(QueryContext context, ISchemaEntity schema, IContentEntity content) + private async Task TransformAsync(QueryContext context, ISchemaEntity schema, IContentEntity content) { var transformed = await TransformCoreAsync(context, schema, Enumerable.Repeat(content, 1)); return transformed[0]; } - private async Task> TransformCoreAsync(QueryContext context, ISchemaEntity schema, IEnumerable contents) + private async Task> TransformCoreAsync(QueryContext context, ISchemaEntity schema, IEnumerable contents) { using (Profiler.TraceMethod()) { - var results = new List(); + var results = new List(); var converters = GenerateConverters(context).ToArray(); diff --git a/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/GraphQLExecutionContext.cs b/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/GraphQLExecutionContext.cs index 52082bbf6..db7e2859c 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/GraphQLExecutionContext.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/GraphQLExecutionContext.cs @@ -20,7 +20,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL { public sealed class GraphQLExecutionContext : QueryExecutionContext { - private static readonly List EmptyAssets = new List(); + private static readonly List EmptyAssets = new List(); private static readonly List EmptyContents = new List(); private readonly IDataLoaderContextAccessor dataLoaderContextAccessor; private readonly IDependencyResolver resolver; @@ -53,7 +53,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL execution.UserContext = this; } - public override Task FindAssetAsync(Guid id) + public override Task FindAssetAsync(Guid id) { var dataLoader = GetAssetsLoader(); @@ -67,7 +67,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL return dataLoader.LoadAsync(id); } - public async Task> GetReferencedAssetsAsync(IJsonValue value) + public async Task> GetReferencedAssetsAsync(IJsonValue value) { var ids = ParseIds(value); @@ -95,9 +95,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL return await dataLoader.LoadManyAsync(ids); } - private IDataLoader GetAssetsLoader() + private IDataLoader GetAssetsLoader() { - return dataLoaderContextAccessor.Context.GetOrAddBatchLoader("Assets", + return dataLoaderContextAccessor.Context.GetOrAddBatchLoader("Assets", async batch => { var result = await GetReferencedAssetsAsync(new List(batch)); diff --git a/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/AssetGraphType.cs b/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/AssetGraphType.cs index 329e27814..801f44c81 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/AssetGraphType.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/AssetGraphType.cs @@ -13,7 +13,7 @@ using Squidex.Infrastructure; namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types { - public sealed class AssetGraphType : ObjectGraphType + public sealed class AssetGraphType : ObjectGraphType { public AssetGraphType(IGraphModel model) { @@ -186,9 +186,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types Description = "An asset"; } - private static IFieldResolver Resolve(Func action) + private static IFieldResolver Resolve(Func action) { - return new FuncFieldResolver(c => action(c.Source)); + return new FuncFieldResolver(c => action(c.Source)); } } } diff --git a/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/ContentGraphType.cs b/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/ContentGraphType.cs index e8f35ae05..63f571c1a 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/ContentGraphType.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/ContentGraphType.cs @@ -13,7 +13,7 @@ using Squidex.Domain.Apps.Entities.Schemas; namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types { - public sealed class ContentGraphType : ObjectGraphType + public sealed class ContentGraphType : ObjectGraphType { public void Initialize(IGraphModel model, ISchemaEntity schema, IComplexGraphType contentDataType) { @@ -116,9 +116,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types Description = $"The structure of a {schemaName} content type."; } - private static IFieldResolver Resolve(Func action) + private static IFieldResolver Resolve(Func action) { - return new FuncFieldResolver(c => action(c.Source)); + return new FuncFieldResolver(c => action(c.Source)); } } } diff --git a/src/Squidex.Domain.Apps.Entities/Contents/IContentEnricher.cs b/src/Squidex.Domain.Apps.Entities/Contents/IContentEnricher.cs index abbfc7f45..1b7334134 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/IContentEnricher.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/IContentEnricher.cs @@ -12,8 +12,8 @@ namespace Squidex.Domain.Apps.Entities.Contents { public interface IContentEnricher { - Task EnrichAsync(IContentEntity content); + Task EnrichAsync(IContentEntity content); - Task> EnrichAsync(IEnumerable contents); + Task> EnrichAsync(IEnumerable contents); } } diff --git a/src/Squidex.Domain.Apps.Entities/Contents/IContentQueryService.cs b/src/Squidex.Domain.Apps.Entities/Contents/IContentQueryService.cs index 6d49fb462..11b64a42f 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/IContentQueryService.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/IContentQueryService.cs @@ -17,11 +17,11 @@ namespace Squidex.Domain.Apps.Entities.Contents { int DefaultPageSizeGraphQl { get; } - Task> QueryAsync(QueryContext context, IReadOnlyList ids); + Task> QueryAsync(QueryContext context, IReadOnlyList ids); - Task> QueryAsync(QueryContext context, string schemaIdOrName, Q query); + Task> QueryAsync(QueryContext context, string schemaIdOrName, Q query); - Task FindContentAsync(QueryContext context, string schemaIdOrName, Guid id, long version = EtagVersion.Any); + Task FindContentAsync(QueryContext context, string schemaIdOrName, Guid id, long version = EtagVersion.Any); Task GetSchemaOrThrowAsync(QueryContext context, string schemaIdOrName); } diff --git a/src/Squidex.Domain.Apps.Entities/Contents/IContentEntityEnriched.cs b/src/Squidex.Domain.Apps.Entities/Contents/IEnrichedContentEntity.cs similarity index 90% rename from src/Squidex.Domain.Apps.Entities/Contents/IContentEntityEnriched.cs rename to src/Squidex.Domain.Apps.Entities/Contents/IEnrichedContentEntity.cs index 0a8b72a28..45b3506a4 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/IContentEntityEnriched.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/IEnrichedContentEntity.cs @@ -9,7 +9,7 @@ using Squidex.Domain.Apps.Core.Contents; namespace Squidex.Domain.Apps.Entities.Contents { - public interface IContentEntityEnriched : IContentEntity + public interface IEnrichedContentEntity : IContentEntity { bool CanUpdate { get; } diff --git a/src/Squidex.Domain.Apps.Entities/Contents/QueryExecutionContext.cs b/src/Squidex.Domain.Apps.Entities/Contents/QueryExecutionContext.cs index 78a2b23c9..a40896a94 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/QueryExecutionContext.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/QueryExecutionContext.cs @@ -18,7 +18,7 @@ namespace Squidex.Domain.Apps.Entities.Contents public class QueryExecutionContext { private readonly ConcurrentDictionary cachedContents = new ConcurrentDictionary(); - private readonly ConcurrentDictionary cachedAssets = new ConcurrentDictionary(); + private readonly ConcurrentDictionary cachedAssets = new ConcurrentDictionary(); private readonly IContentQueryService contentQuery; private readonly IAssetQueryService assetQuery; private readonly QueryContext context; @@ -34,7 +34,7 @@ namespace Squidex.Domain.Apps.Entities.Contents this.context = context; } - public virtual async Task FindAssetAsync(Guid id) + public virtual async Task FindAssetAsync(Guid id) { var asset = cachedAssets.GetOrDefault(id); @@ -92,7 +92,7 @@ namespace Squidex.Domain.Apps.Entities.Contents return result; } - public virtual async Task> GetReferencedAssetsAsync(ICollection ids) + public virtual async Task> GetReferencedAssetsAsync(ICollection ids) { Guard.NotNull(ids, nameof(ids)); diff --git a/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs b/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs index 7c6005e48..75b9867a7 100644 --- a/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs @@ -265,7 +265,7 @@ namespace Squidex.Areas.Api.Controllers.Assets { var context = await CommandBus.PublishAsync(command); - var result = context.Result(); + var result = context.Result(); var response = AssetDto.FromAsset(result, this, app); return response; diff --git a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetDto.cs b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetDto.cs index 6858b3a91..5c996cf0d 100644 --- a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetDto.cs @@ -118,7 +118,7 @@ namespace Squidex.Areas.Api.Controllers.Assets.Models [JsonProperty("_meta")] public AssetMetadata Metadata { get; set; } - public static AssetDto FromAsset(IAssetEntityEnriched asset, ApiController controller, string app, bool isDuplicate = false) + public static AssetDto FromAsset(IEnrichedAssetEntity asset, ApiController controller, string app, bool isDuplicate = false) { var response = SimpleMapper.Map(asset, new AssetDto { FileType = asset.FileName.FileType() }); diff --git a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetsDto.cs b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetsDto.cs index 9d0900db6..efd81147b 100644 --- a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetsDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetsDto.cs @@ -37,7 +37,7 @@ namespace Squidex.Areas.Api.Controllers.Assets.Models return Items.ToSurrogateKeys(); } - public static AssetsDto FromAssets(IResultList assets, ApiController controller, string app) + public static AssetsDto FromAssets(IResultList assets, ApiController controller, string app) { var response = new AssetsDto { diff --git a/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs b/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs index 73645d16f..6885ce6cf 100644 --- a/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs @@ -445,7 +445,7 @@ namespace Squidex.Areas.Api.Controllers.Contents { var context = await CommandBus.PublishAsync(command); - var result = context.Result(); + var result = context.Result(); var response = ContentDto.FromContent(null, result, this); return response; diff --git a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentDto.cs b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentDto.cs index c91e04e79..26440c83f 100644 --- a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentDto.cs @@ -84,7 +84,7 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models /// public long Version { get; set; } - public static ContentDto FromContent(QueryContext context, IContentEntityEnriched content, ApiController controller) + public static ContentDto FromContent(QueryContext context, IEnrichedContentEntity content, ApiController controller) { var response = SimpleMapper.Map(content, new ContentDto()); @@ -107,7 +107,7 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models return response.CreateLinksAsync(content, controller, content.AppId.Name, content.SchemaId.Name); } - private ContentDto CreateLinksAsync(IContentEntityEnriched content, ApiController controller, string app, string schema) + private ContentDto CreateLinksAsync(IEnrichedContentEntity content, ApiController controller, string app, string schema) { var values = new { app, name = schema, id = Id }; diff --git a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs index 765fc8027..c81ec7b0e 100644 --- a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs @@ -47,7 +47,7 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models return Items.ToSurrogateKeys(); } - public static async Task FromContentsAsync(IResultList contents, + public static async Task FromContentsAsync(IResultList contents, QueryContext context, ApiController controller, ISchemaEntity schema, IContentWorkflow contentWorkflow) { var result = new ContentsDto diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs index d43d2f623..fbb44eca1 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs @@ -14,7 +14,6 @@ using FakeItEasy; using FluentAssertions; using Orleans; using Squidex.Domain.Apps.Core.Tags; -using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Domain.Apps.Entities.Assets.Commands; using Squidex.Domain.Apps.Entities.Assets.State; using Squidex.Domain.Apps.Entities.Tags; @@ -43,6 +42,10 @@ namespace Squidex.Domain.Apps.Entities.Assets private readonly AssetFile file; private readonly AssetCommandMiddleware sut; + public sealed class MyCommand : SquidexCommand + { + } + protected override Guid Id { get { return assetId; } @@ -59,11 +62,14 @@ namespace Squidex.Domain.Apps.Entities.Assets .ReturnsLazily(() => SimpleMapper.Map(asset.Snapshot, new AssetEntity())); A.CallTo(() => assetQuery.QueryByHashAsync(AppId, A.Ignored)) - .Returns(new List()); + .Returns(new List()); A.CallTo(() => grainFactory.GetGrain(Id, null)) .Returns(asset); + A.CallTo(() => assetThumbnailGenerator.GetImageInfoAsync(stream)) + .Returns(image); + sut = new AssetCommandMiddleware(grainFactory, assetEnricher, assetQuery, @@ -74,23 +80,41 @@ namespace Squidex.Domain.Apps.Entities.Assets [Fact] public async Task Should_not_invoke_enricher_for_other_result() { - var command = CreateCommand(new CreateApp()); + var command = CreateCommand(new MyCommand()); var context = CreateContextForCommand(command); context.Complete(12); await sut.HandleAsync(context); - A.CallTo(() => assetEnricher.EnrichAsync(A.Ignored)) + A.CallTo(() => assetEnricher.EnrichAsync(A.Ignored)) .MustNotHaveHappened(); } [Fact] - public async Task Should_enrich_asset_result() + public async Task Should_not_invoke_enricher_if_already_enriched() { var result = new AssetEntity(); - var command = CreateCommand(new CreateAsset()); + var command = CreateCommand(new MyCommand()); + var context = CreateContextForCommand(command); + + context.Complete(result); + + await sut.HandleAsync(context); + + Assert.Same(result, context.Result()); + + A.CallTo(() => assetEnricher.EnrichAsync(A.Ignored)) + .MustNotHaveHappened(); + } + + [Fact] + public async Task Should_enrich_asset_result() + { + var result = A.Fake(); + + var command = CreateCommand(new MyCommand()); var context = CreateContextForCommand(command); context.Complete(result); @@ -102,7 +126,7 @@ namespace Squidex.Domain.Apps.Entities.Assets await sut.HandleAsync(context); - Assert.Equal(enriched, context.Result()); + Assert.Same(enriched, context.Result()); } [Fact] @@ -111,9 +135,6 @@ namespace Squidex.Domain.Apps.Entities.Assets var command = CreateCommand(new CreateAsset { AssetId = assetId, File = file }); var context = CreateContextForCommand(command); - SetupTags(command); - SetupImageInfo(); - await sut.HandleAsync(context); var result = context.Result(); @@ -127,8 +148,6 @@ namespace Squidex.Domain.Apps.Entities.Assets var command = CreateCommand(new CreateAsset { AssetId = assetId, File = file }); var context = CreateContextForCommand(command); - SetupImageInfo(); - await sut.HandleAsync(context); Assert.True(command.FileHash.Length > 10); @@ -141,7 +160,6 @@ namespace Squidex.Domain.Apps.Entities.Assets var context = CreateContextForCommand(command); SetupSameHashAsset(file.FileName, file.FileSize, out _); - SetupImageInfo(); await sut.HandleAsync(context); @@ -157,7 +175,6 @@ namespace Squidex.Domain.Apps.Entities.Assets var context = CreateContextForCommand(command); SetupSameHashAsset("other-name", file.FileSize, out _); - SetupImageInfo(); await sut.HandleAsync(context); @@ -173,7 +190,6 @@ namespace Squidex.Domain.Apps.Entities.Assets var context = CreateContextForCommand(command); SetupSameHashAsset(file.FileName, file.FileSize, out var duplicate); - SetupImageInfo(); await sut.HandleAsync(context); @@ -191,7 +207,6 @@ namespace Squidex.Domain.Apps.Entities.Assets var context = CreateContextForCommand(command); SetupSameHashAsset(file.FileName, 12345, out _); - SetupImageInfo(); await sut.HandleAsync(context); @@ -204,8 +219,6 @@ namespace Squidex.Domain.Apps.Entities.Assets var command = CreateCommand(new UpdateAsset { AssetId = assetId, File = file }); var context = CreateContextForCommand(command); - SetupImageInfo(); - await ExecuteCreateAsync(); await sut.HandleAsync(context); @@ -220,8 +233,6 @@ namespace Squidex.Domain.Apps.Entities.Assets var command = CreateCommand(new UpdateAsset { AssetId = assetId, File = file }); var context = CreateContextForCommand(command); - SetupImageInfo(); - await ExecuteCreateAsync(); await sut.HandleAsync(context); @@ -235,13 +246,11 @@ namespace Squidex.Domain.Apps.Entities.Assets var command = CreateCommand(new UpdateAsset { AssetId = assetId, File = file }); var context = CreateContextForCommand(command); - SetupImageInfo(); - await ExecuteCreateAsync(); await sut.HandleAsync(context); - var result = context.Result(); + var result = context.Result(); result.Should().BeEquivalentTo(asset.Snapshot, x => x.ExcludingMissingMembers()); } @@ -252,13 +261,11 @@ namespace Squidex.Domain.Apps.Entities.Assets var command = CreateCommand(new AnnotateAsset { AssetId = assetId, FileName = "newName" }); var context = CreateContextForCommand(command); - SetupImageInfo(); - await ExecuteCreateAsync(); await sut.HandleAsync(context); - var result = context.Result(); + var result = context.Result(); result.Should().BeEquivalentTo(asset.Snapshot, x => x.ExcludingMissingMembers()); } @@ -268,16 +275,6 @@ namespace Squidex.Domain.Apps.Entities.Assets return asset.ExecuteAsync(CreateCommand(new CreateAsset { AssetId = Id, File = file })); } - private void SetupTags(CreateAsset command) - { - A.CallTo(() => tagGenerator.GenerateTags(command, A>.Ignored)) - .Invokes(new Action>((c, tags) => - { - tags.Add("tag1"); - tags.Add("tag2"); - })); - } - private void AssertAssetHasBeenUploaded(long version, Guid commitId) { var fileName = AssetStoreExtensions.GetFileName(assetId.ToString(), version); @@ -290,7 +287,7 @@ namespace Squidex.Domain.Apps.Entities.Assets .MustHaveHappened(); } - private void SetupSameHashAsset(string fileName, long fileSize, out IAssetEntityEnriched duplicate) + private void SetupSameHashAsset(string fileName, long fileSize, out IEnrichedAssetEntity duplicate) { duplicate = new AssetEntity { @@ -299,13 +296,7 @@ namespace Squidex.Domain.Apps.Entities.Assets }; A.CallTo(() => assetQuery.QueryByHashAsync(A.Ignored, A.Ignored)) - .Returns(new List { duplicate }); - } - - private void SetupImageInfo() - { - A.CallTo(() => assetThumbnailGenerator.GetImageInfoAsync(stream)) - .Returns(image); + .Returns(new List { duplicate }); } private void AssertAssetImageChecked() diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetQueryServiceTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetQueryServiceTests.cs index ac845ef8e..1f2a4fc00 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetQueryServiceTests.cs +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetQueryServiceTests.cs @@ -85,7 +85,7 @@ namespace Squidex.Domain.Apps.Entities.Assets .Returns(new List { found }); A.CallTo(() => assetEnricher.EnrichAsync(A>.That.IsSameSequenceAs(found))) - .Returns(new List { enriched }); + .Returns(new List { enriched }); var result = await sut.QueryByHashAsync(appId.Id, "hash"); @@ -107,7 +107,7 @@ namespace Squidex.Domain.Apps.Entities.Assets .Returns(ResultList.CreateFrom(8, found1, found2)); A.CallTo(() => assetEnricher.EnrichAsync(A>.That.IsSameSequenceAs(found1, found2))) - .Returns(new List { enriched1, enriched2 }); + .Returns(new List { enriched1, enriched2 }); var result = await sut.QueryAsync(context, Q.Empty.WithIds(ids)); @@ -129,7 +129,7 @@ namespace Squidex.Domain.Apps.Entities.Assets .Returns(ResultList.CreateFrom(8, found1, found2)); A.CallTo(() => assetEnricher.EnrichAsync(A>.That.IsSameSequenceAs(found1, found2))) - .Returns(new List { enriched1, enriched2 }); + .Returns(new List { enriched1, enriched2 }); var result = await sut.QueryAsync(context, Q.Empty); diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentCommandMiddlewareTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentCommandMiddlewareTests.cs index f375ef589..91ed5025a 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentCommandMiddlewareTests.cs +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentCommandMiddlewareTests.cs @@ -9,7 +9,6 @@ using System; using System.Threading.Tasks; using FakeItEasy; using Orleans; -using Squidex.Domain.Apps.Entities.Contents.Commands; using Squidex.Domain.Apps.Entities.Contents.State; using Squidex.Domain.Apps.Entities.TestHelpers; using Squidex.Infrastructure.Commands; @@ -23,6 +22,10 @@ namespace Squidex.Domain.Apps.Entities.Contents private readonly Guid contentId = Guid.NewGuid(); private readonly ContentCommandMiddleware sut; + public sealed class MyCommand : SquidexCommand + { + } + protected override Guid Id { get { return contentId; } @@ -36,23 +39,41 @@ namespace Squidex.Domain.Apps.Entities.Contents [Fact] public async Task Should_not_invoke_enricher_for_other_result() { - var command = CreateCommand(new CreateContent()); + var command = CreateCommand(new MyCommand()); var context = CreateContextForCommand(command); context.Complete(12); await sut.HandleAsync(context); - A.CallTo(() => contentEnricher.EnrichAsync(A.Ignored)) + A.CallTo(() => contentEnricher.EnrichAsync(A.Ignored)) .MustNotHaveHappened(); } [Fact] - public async Task Should_enrich_content_result() + public async Task Should_not_invoke_enricher_if_already_enriched() { var result = new ContentEntity(); - var command = CreateCommand(new CreateContent()); + var command = CreateCommand(new MyCommand()); + var context = CreateContextForCommand(command); + + context.Complete(result); + + await sut.HandleAsync(context); + + Assert.Same(result, context.Result()); + + A.CallTo(() => contentEnricher.EnrichAsync(A.Ignored)) + .MustNotHaveHappened(); + } + + [Fact] + public async Task Should_enrich_content_result() + { + var result = A.Fake(); + + var command = CreateCommand(new MyCommand()); var context = CreateContextForCommand(command); context.Complete(result); @@ -64,7 +85,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await sut.HandleAsync(context); - Assert.Equal(enriched, context.Result()); + Assert.Same(enriched, context.Result()); } } } diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentQueryServiceTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentQueryServiceTests.cs index 909486646..52117c964 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentQueryServiceTests.cs +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentQueryServiceTests.cs @@ -532,7 +532,7 @@ namespace Squidex.Domain.Apps.Entities.Contents { var input = (IEnumerable)x.Arguments[0]; - return Task.FromResult>(input.Select(c => SimpleMapper.Map(c, new ContentEntity())).ToList()); + return Task.FromResult>(input.Select(c => SimpleMapper.Map(c, new ContentEntity())).ToList()); }); } diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs index 6edf39436..89f343e23 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs @@ -96,7 +96,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL sut = CreateSut(); } - protected static IContentEntityEnriched CreateContent(Guid id, Guid refId, Guid assetId, NamedContentData data = null, NamedContentData dataDraft = null) + protected static IEnrichedContentEntity CreateContent(Guid id, Guid refId, Guid assetId, NamedContentData data = null, NamedContentData dataDraft = null) { var now = SystemClock.Instance.GetCurrentInstant(); @@ -164,7 +164,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL return content; } - protected static IAssetEntityEnriched CreateAsset(Guid id) + protected static IEnrichedAssetEntity CreateAsset(Guid id) { var now = SystemClock.Instance.GetCurrentInstant();