38 lines
1.3 KiB
C#
38 lines
1.3 KiB
C#
using Femto.Common.Domain;
|
|
using MediatR;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
namespace Femto.Modules.Blog.Application;
|
|
|
|
internal class BlogModule(IHost host) : IBlogModule
|
|
{
|
|
public async Task PostCommand(ICommand command, CancellationToken cancellationToken = default)
|
|
{
|
|
using var scope = host.Services.CreateScope();
|
|
var mediator = scope.ServiceProvider.GetRequiredService<IMediator>();
|
|
await mediator.Send(command, cancellationToken);
|
|
}
|
|
|
|
public async Task<TResponse> PostCommand<TResponse>(
|
|
ICommand<TResponse> command,
|
|
CancellationToken cancellationToken = default
|
|
)
|
|
{
|
|
using var scope = host.Services.CreateScope();
|
|
var mediator = scope.ServiceProvider.GetRequiredService<IMediator>();
|
|
var response = await mediator.Send(command, cancellationToken);
|
|
return response;
|
|
}
|
|
|
|
public async Task<TResponse> PostQuery<TResponse>(
|
|
IQuery<TResponse> query,
|
|
CancellationToken cancellationToken = default
|
|
)
|
|
{
|
|
using var scope = host.Services.CreateScope();
|
|
var mediator = scope.ServiceProvider.GetRequiredService<IMediator>();
|
|
var response = await mediator.Send(query, cancellationToken);
|
|
return response;
|
|
}
|
|
}
|