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 result = await contentQuery.QueryAsync(context, Q.Empty.WithIds(ids).Ids);
var response = new ContentsDto var response = ContentsDto.FromContents(result, context, this, app);
{
Total = result.Count,
Items = result.Take(200).Select(x => ContentDto.FromContent(x, context)).ToArray()
};
if (controllerOptions.Value.EnableSurrogateKeys && response.Items.Length <= controllerOptions.Value.MaxItemsForSurrogateKeys) 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 result = await contentQuery.QueryAsync(context, name, Q.Empty.WithIds(ids).WithODataQuery(Request.QueryString.ToString()));
var response = new ContentsDto var response = ContentsDto.FromContents(result, context, this, app);
{
Total = result.Total,
Items = result.Take(200).Select(x => ContentDto.FromContent(x, context)).ToArray()
};
if (controllerOptions.Value.EnableSurrogateKeys && response.Items.Length <= controllerOptions.Value.MaxItemsForSurrogateKeys) if (controllerOptions.Value.EnableSurrogateKeys && response.Items.Length <= controllerOptions.Value.MaxItemsForSurrogateKeys)
{ {
@ -206,7 +198,7 @@ namespace Squidex.Areas.Api.Controllers.Contents
var context = Context(); var context = Context();
var content = await contentQuery.FindContentAsync(context, name, id); 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) if (controllerOptions.Value.EnableSurrogateKeys)
{ {
@ -242,7 +234,7 @@ namespace Squidex.Areas.Api.Controllers.Contents
var context = Context(); var context = Context();
var content = await contentQuery.FindContentAsync(context, name, id, version); 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) 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 namespace Squidex.Areas.Api.Controllers.Contents.Models
{ {
public sealed class ContentDto : IGenerateETag public sealed class ContentDto : Resource, IGenerateETag
{ {
/// <summary> /// <summary>
/// The if of the content item. /// The if of the content item.
@ -99,7 +99,7 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models
return response; 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()); 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()); 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. // 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 namespace Squidex.Areas.Api.Controllers.Contents.Models
{ {
public sealed class ContentsDto public sealed class ContentsDto : Resource
{ {
/// <summary> /// <summary>
/// The total number of content items. /// The total number of content items.
@ -18,5 +25,32 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models
/// The content items. /// The content items.
/// </summary> /// </summary>
public ContentDto[] Items { get; set; } 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