Adds streaming to GetContents

This commit is contained in:
Jonathan Bourdon
2024-07-17 21:47:31 -04:00
parent 25ea9b50c7
commit bc87331903
12 changed files with 201 additions and 42 deletions

View File

@@ -0,0 +1,16 @@
using Hutopy.Web.Messages.Data;
using Microsoft.EntityFrameworkCore;
namespace Hutopy.Web.Messages;
public static class DependencyInjection
{
public static IServiceCollection AddMessagingModule(
this IServiceCollection services,
Action<DbContextOptionsBuilder>? configureAction = null)
{
services.AddDbContext<MessagingDbContext>(configureAction);
return services;
}
}

View File

@@ -4,9 +4,14 @@ using Microsoft.EntityFrameworkCore;
namespace Hutopy.Web.Messages.Handlers;
public sealed class GetMessagesRequest
{
public Guid SubjectId { get; set; }
}
public class GetMessages(
MessagingDbContext context)
: EndpointWithoutRequest<List<Message>>
: Endpoint<GetMessagesRequest, List<Message>>
{
public override void Configure()
{
@@ -16,13 +21,12 @@ public class GetMessages(
}
public override async Task HandleAsync(
GetMessagesRequest req,
CancellationToken ct)
{
var subjectId = Route<Guid>("SubjectId");
var comments = await context
.Messages
.Where(c => c.SubjectId == subjectId)
.Where(c => c.SubjectId == req.SubjectId)
.ToListAsync(cancellationToken: ct);
await SendAsync(comments, cancellation: ct);

View File

@@ -1,13 +1,17 @@
using FastEndpoints;
using Hutopy.Web.Messages.Data;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
namespace Hutopy.Web.Messages.Handlers;
public sealed class GetMessagesByUserRequest
{
public Guid UserId { get; set; }
}
public class GetMessagesByUser(
MessagingDbContext context)
: EndpointWithoutRequest<List<Message>>
: Endpoint<GetMessagesByUserRequest, List<Message>>
{
public override void Configure()
{
@@ -16,13 +20,12 @@ public class GetMessagesByUser(
}
public override async Task HandleAsync(
GetMessagesByUserRequest req,
CancellationToken ct)
{
var userId = Route<Guid>("UserId");
var posts = await context
.Messages
.Where(c => c.CreatedBy == userId)
.Where(c => c.CreatedBy == req.UserId)
.ToListAsync(cancellationToken: ct);
await SendAsync(posts, cancellation: ct);