Skip to content

Commit

Permalink
update IResourceResponseAdvice
Browse files Browse the repository at this point in the history
  • Loading branch information
kinosang committed Apr 19, 2024
1 parent 8c7286e commit 82d6de8
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public sealed class AdviceCreateValidation<TEntity, TRequest> : IResourceCreateA

#region IResourceCreateAdvice<TEntity,TRequest> Members

public int Order => 200_000_000;
public int Order => 100_000_000;

public int Priority => Order;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public sealed class AdviceUpdateValidation<TEntity, TRequest> : IResourceUpdateA

#region IResourceUpdateAdvice<TEntity,TRequest> Members

public int Order => 200_000_000;
public int Order => 100_000_000;

public int Priority => Order;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@

namespace Schemata.Resource.Foundation.Advices;

public interface IResourceResponseAdvice<TEntity> : IAdvice<TEntity, HttpContext>
where TEntity : class, IIdentifier;
public interface IResourceResponseAdvice<TDetail> : IAdvice<TDetail?, HttpContext>
where TDetail : class, IIdentifier;
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using System.Collections.Generic;
using System.Collections.Immutable;
using Microsoft.AspNetCore.Http;
using Schemata.Abstractions.Advices;
using Schemata.Abstractions.Entities;

namespace Schemata.Resource.Foundation.Advices;

public interface IResourceResponsesAdvice<TEntity> : IAdvice<IList<TEntity>, HttpContext>
where TEntity : class, IIdentifier;
public interface IResourceResponsesAdvice<TSummary> : IAdvice<ImmutableArray<TSummary>?, HttpContext>
where TSummary : class, IIdentifier;
29 changes: 15 additions & 14 deletions src/Schemata.Resource.Http/ResourceController.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Threading.Tasks;
using Humanizer;
Expand Down Expand Up @@ -126,17 +127,17 @@ public class ResourceController<TEntity, TRequest, TDetail, TSummary> : Controll
var entities = await repository.ListAsync(q => query(q), HttpContext.RequestAborted)
.ToListAsync(HttpContext.RequestAborted);

if (!await Advices<IResourceResponsesAdvice<TEntity>>.AdviseAsync(ServiceProvider, ctx, entities, HttpContext, HttpContext.RequestAborted)) {
return EmptyResult;
}

token.Skip += token.PageSize;

if (entities.Count >= token.PageSize) {
response.NextPageToken = await token.ToStringAsync();
}

response.Entities = Mapper.Map<IEnumerable<TEntity>, IEnumerable<TSummary>>(entities);
response.Entities = Mapper.Map<IEnumerable<TEntity>, IEnumerable<TSummary>>(entities)?.ToImmutableArray();

if (!await Advices<IResourceResponsesAdvice<TSummary>>.AdviseAsync(ServiceProvider, ctx, response.Entities, HttpContext, HttpContext.RequestAborted)) {
return EmptyResult;
}

return Ok(response);
}
Expand All @@ -160,12 +161,12 @@ public class ResourceController<TEntity, TRequest, TDetail, TSummary> : Controll
return NotFound();
}

if (!await Advices<IResourceResponseAdvice<TEntity>>.AdviseAsync(ServiceProvider, ctx, entity, HttpContext, HttpContext.RequestAborted)) {
var detail = Mapper.Map<TEntity, TDetail>(entity);

if (!await Advices<IResourceResponseAdvice<TDetail>>.AdviseAsync(ServiceProvider, ctx, detail, HttpContext, HttpContext.RequestAborted)) {
return EmptyResult;
}

var detail = Mapper.Map<TEntity, TDetail>(entity);

return Ok(detail);
}

Expand All @@ -191,12 +192,12 @@ public class ResourceController<TEntity, TRequest, TDetail, TSummary> : Controll
await Repository.AddAsync(entity, HttpContext.RequestAborted);
await Repository.CommitAsync(HttpContext.RequestAborted);

if (!await Advices<IResourceResponseAdvice<TEntity>>.AdviseAsync(ServiceProvider, ctx, entity, HttpContext, HttpContext.RequestAborted)) {
var detail = Mapper.Map<TEntity, TDetail>(entity);

if (!await Advices<IResourceResponseAdvice<TDetail>>.AdviseAsync(ServiceProvider, ctx, detail, HttpContext, HttpContext.RequestAborted)) {
return EmptyResult;
}

var detail = Mapper.Map<TEntity, TDetail>(entity);

return CreatedAtAction(nameof(Get), new { id = entity.Id }, detail);
}

Expand Down Expand Up @@ -226,12 +227,12 @@ public class ResourceController<TEntity, TRequest, TDetail, TSummary> : Controll
await Repository.UpdateAsync(entity, HttpContext.RequestAborted);
await Repository.CommitAsync(HttpContext.RequestAborted);

if (!await Advices<IResourceResponseAdvice<TEntity>>.AdviseAsync(ServiceProvider, ctx, entity, HttpContext, HttpContext.RequestAborted)) {
var detail = Mapper.Map<TEntity, TDetail>(entity);

if (!await Advices<IResourceResponseAdvice<TDetail>>.AdviseAsync(ServiceProvider, ctx, detail, HttpContext, HttpContext.RequestAborted)) {
return EmptyResult;
}

var detail = Mapper.Map<TEntity, TDetail>(entity);

return Ok(detail);
}

Expand Down

0 comments on commit 82d6de8

Please sign in to comment.