Browse Source

Preparation for content.

pull/363/head
Sebastian Stehle 7 years ago
parent
commit
d6c65d99e0
  1. 16
      src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs
  2. 11
      src/Squidex/Areas/Api/Controllers/Contents/Models/ContentDto.cs
  3. 36
      src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs

16
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)
{

11
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
{
/// <summary>
/// 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;
}
}
}

36
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
{
/// <summary>
/// The total number of content items.
@ -18,5 +25,32 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models
/// The content items.
/// </summary>
public ContentDto[] Items { get; set; }
public static ContentsDto FromContents(IList<IContentEntity> 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<IContentEntity> 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;
}
}
}

Loading…
Cancel
Save