diff --git a/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs b/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs index 61c74d203..7ba607666 100644 --- a/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs @@ -128,11 +128,7 @@ namespace Squidex.Areas.Api.Controllers.Contents var result = await contentQuery.QueryAsync(context, Q.Empty.WithIds(ids).Ids); - var response = new ContentsDto - { - Total = result.Count, - Items = result.Take(200).Select(x => ContentDto.FromContent(x, context)).ToArray() - }; + var response = ContentsDto.FromContents(result, context, this, app); if (controllerOptions.Value.EnableSurrogateKeys && response.Items.Length <= controllerOptions.Value.MaxItemsForSurrogateKeys) { @@ -168,11 +164,7 @@ namespace Squidex.Areas.Api.Controllers.Contents var result = await contentQuery.QueryAsync(context, name, Q.Empty.WithIds(ids).WithODataQuery(Request.QueryString.ToString())); - var response = new ContentsDto - { - Total = result.Total, - Items = result.Take(200).Select(x => ContentDto.FromContent(x, context)).ToArray() - }; + var response = ContentsDto.FromContents(result, context, this, app); if (controllerOptions.Value.EnableSurrogateKeys && response.Items.Length <= controllerOptions.Value.MaxItemsForSurrogateKeys) { @@ -206,7 +198,7 @@ namespace Squidex.Areas.Api.Controllers.Contents var context = Context(); var content = await contentQuery.FindContentAsync(context, name, id); - var response = ContentDto.FromContent(content, context); + var response = ContentDto.FromContent(content, context, this, app); if (controllerOptions.Value.EnableSurrogateKeys) { @@ -242,7 +234,7 @@ namespace Squidex.Areas.Api.Controllers.Contents var context = Context(); var content = await contentQuery.FindContentAsync(context, name, id, version); - var response = ContentDto.FromContent(content, context); + var response = ContentDto.FromContent(content, context, this, app); if (controllerOptions.Value.EnableSurrogateKeys) { diff --git a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentDto.cs b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentDto.cs index 5e896298b..81b605a7d 100644 --- a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentDto.cs @@ -20,7 +20,7 @@ using Squidex.Web; namespace Squidex.Areas.Api.Controllers.Contents.Models { - public sealed class ContentDto : IGenerateETag + public sealed class ContentDto : Resource, IGenerateETag { /// /// The if of the content item. @@ -99,7 +99,7 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models return response; } - public static ContentDto FromContent(IContentEntity content, QueryContext context) + public static ContentDto FromContent(IContentEntity content, QueryContext context, ApiController controller, string app) { var response = SimpleMapper.Map(content, new ContentDto()); @@ -119,7 +119,12 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models response.ScheduleJob = SimpleMapper.Map(content.ScheduleJob, new ScheduleJobDto()); } - return response; + return response.CreateLinks(controller, app); + } + + private ContentDto CreateLinks(ApiController controller, object app) + { + return this; } } } diff --git a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs index 12c19cd9c..ef185416d 100644 --- a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs @@ -5,9 +5,16 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System.Collections.Generic; +using System.Linq; +using Squidex.Domain.Apps.Entities; +using Squidex.Domain.Apps.Entities.Contents; +using Squidex.Infrastructure; +using Squidex.Web; + namespace Squidex.Areas.Api.Controllers.Contents.Models { - public sealed class ContentsDto + public sealed class ContentsDto : Resource { /// /// The total number of content items. @@ -18,5 +25,32 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models /// The content items. /// public ContentDto[] Items { get; set; } + + public static ContentsDto FromContents(IList contents, QueryContext context, ApiController controller, string app) + { + var result = new ContentsDto + { + Total = contents.Count, + Items = contents.Select(x => ContentDto.FromContent(x, context, controller, app)).ToArray() + }; + + return result.CreateLinks(controller, app); + } + + public static ContentsDto FromContents(IResultList contents, QueryContext context, ApiController controller, string app) + { + var result = new ContentsDto + { + Total = contents.Total, + Items = contents.Select(x => ContentDto.FromContent(x, context, controller, app)).ToArray() + }; + + return result.CreateLinks(controller, app); + } + + private ContentsDto CreateLinks(ApiController controller, string app) + { + return this; + } } }