chore(codebase): full cleanup pass

This commit is contained in:
2025-06-21 01:58:48 -04:00
parent 8323477cd0
commit 81b5db34ef
92 changed files with 529 additions and 452 deletions

View File

@@ -10,6 +10,8 @@ public class MessagingDbContext(
{
public const string SchemaName = "Messaging";
public DbSet<Message> Messages { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema(SchemaName);
@@ -21,8 +23,6 @@ public class MessagingDbContext(
.HasDefaultValueSql("CURRENT_TIMESTAMP");
}
public DbSet<Message> Messages { get; set; }
public async Task<IEnumerable<MessageDto>> GetMessagesAsync(
Guid subjectId,
Guid? parentId,
@@ -30,7 +30,7 @@ public class MessagingDbContext(
int pageSize,
CancellationToken ct = default)
{
var query = Messages
IQueryable<Message> query = Messages
.Where(c => c.SubjectId == subjectId)
.Where(c => c.ParentId == parentId);
@@ -39,7 +39,7 @@ public class MessagingDbContext(
var lastMessage = await Messages
.Where(c => c.Id == lastId.Value)
.Select(c => new { c.CreatedAt, c.Id })
.FirstOrDefaultAsync(cancellationToken: ct);
.FirstOrDefaultAsync(ct);
if (lastMessage != null)
{
@@ -49,17 +49,17 @@ public class MessagingDbContext(
}
}
var messages = await query
List<Message> messages = await query
.OrderByDescending(c => c.CreatedAt)
.ThenByDescending(c => c.Id)
.Take(pageSize)
.ToListAsync(cancellationToken: ct);
.ToListAsync(ct);
var result = await Task.WhenAll(
MessageDto[] result = await Task.WhenAll(
messages.Select(async message =>
{
var writer = await userLookup.GetUserAsync(message.CreatedBy, ct);
UserReference? writer = await userLookup.GetUserAsync(message.CreatedBy, ct);
return new MessageDto(
message.Id,
message.SubjectId,
@@ -80,11 +80,11 @@ public class MessagingDbContext(
int pageSize,
CancellationToken ct = default)
{
var query = Messages
IQueryable<Message> query = Messages
.Where(c => c.SubjectId == subjectId)
.Where(c => c.ParentId == parentId);
var messageCount = await query
int messageCount = await query
.Take(pageSize)
.CountAsync(ct);

View File

@@ -9,7 +9,7 @@ public static class DependencyInjection
Action<DbContextOptionsBuilder>? configureAction = null)
{
builder.Services.AddDbContext<MessagingDbContext>(configureAction);
return builder;
}
@@ -17,10 +17,10 @@ public static class DependencyInjection
this IApplicationBuilder app,
CancellationToken cancellationToken = default)
{
var scopeFactory = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>();
using var scope = scopeFactory.CreateScope();
await using var context = scope.ServiceProvider.GetRequiredService<MessagingDbContext>();
await context.Database.MigrateAsync(cancellationToken: cancellationToken);
IServiceScopeFactory scopeFactory = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>();
using IServiceScope scope = scopeFactory.CreateScope();
await using MessagingDbContext context = scope.ServiceProvider.GetRequiredService<MessagingDbContext>();
await context.Database.MigrateAsync(cancellationToken);
return app;
}

View File

@@ -40,14 +40,14 @@ public class AddMessage(
AddMessageRequest req,
CancellationToken ct)
{
var message = new Message
Message message = new()
{
Id = req.Id ?? Guid.CreateVersion7(),
SubjectId = req.SubjectId,
CreatedBy = User.GetUserId(),
Value = req.Message
};
};
await context.Messages.AddAsync(message, ct);
await context.SaveChangesAsync(ct);

View File

@@ -20,7 +20,7 @@ internal sealed class AddReplyRequestValidator
RuleFor(r => r.ParentId)
.NotNull().WithMessage("You must specify a ParentId")
.NotEmpty().WithMessage("You must specify a non-empty ParentId");
RuleFor(r => r.SubjectId)
.NotNull().WithMessage("You must specify a SubjectId")
.NotEmpty().WithMessage("You must specify a non-empty SubjectId");
@@ -45,10 +45,10 @@ internal sealed class AddReply(
AddReplyRequest req,
CancellationToken ct)
{
var message = new Message
Message message = new()
{
Id = Guid.CreateVersion7(),
SubjectId = req.SubjectId,
SubjectId = req.SubjectId,
ParentId = req.ParentId,
CreatedBy = User.GetUserId(),
Value = req.Message

View File

@@ -39,15 +39,15 @@ public class ChangeMessage(
ChangeMessageRequest req,
CancellationToken ct)
{
var message = await context.Messages.FirstOrDefaultAsync(x => x.Id == req.Id, ct);
Message? message = await context.Messages.FirstOrDefaultAsync(x => x.Id == req.Id, ct);
if (message is null)
{
await SendNotFoundAsync(ct);
return;
}
var userId = HttpContext.User.GetUserId();
Guid userId = HttpContext.User.GetUserId();
if (message.CreatedBy != userId)
{
await SendForbiddenAsync(ct);
@@ -58,7 +58,7 @@ public class ChangeMessage(
message.Value = req.Message;
context.Update(message);
await context.SaveChangesAsync(ct);
}
}

View File

@@ -30,21 +30,21 @@ public class DeleteMessage(
DeleteMessageRequest req,
CancellationToken ct)
{
var message = await context.Messages.FirstOrDefaultAsync(x => x.Id == req.MessageId, ct);
Message? message = await context.Messages.FirstOrDefaultAsync(x => x.Id == req.MessageId, ct);
if (message is null)
{
await SendNotFoundAsync(ct);
return;
}
var userId = HttpContext.User.GetUserId();
Guid userId = HttpContext.User.GetUserId();
if (message.CreatedBy != userId)
{
await SendForbiddenAsync(ct);
return;
}
context.Messages.Remove(message);
await context.SaveChangesAsync(ct);

View File

@@ -28,17 +28,14 @@ public class GetMessageCount(
GetMessageCountRequest req,
CancellationToken ct)
{
var messageCount = await context.GetMessageCountAsync(
int messageCount = await context.GetMessageCountAsync(
req.SubjectId,
null,
req.PageSize,
ct);
await SendAsync(
new()
{
Count = messageCount
},
new GetMessageCountResponse { Count = messageCount },
cancellation: ct);
}
}

View File

@@ -30,13 +30,13 @@ public class GetMessages(
GetMessagesRequest req,
CancellationToken ct)
{
var messages = await context.GetMessagesAsync(
IEnumerable<MessageDto> messages = await context.GetMessagesAsync(
req.SubjectId,
null,
req.LastId,
req.PageSize,
ct);
await SendOkAsync(new GetMessagesResponse(messages), ct);
}
}

View File

@@ -30,16 +30,16 @@ public class GetMessagesByUser(
GetMessagesByUserRequest req,
CancellationToken ct)
{
var messages = await context
List<Message> messages = await context
.Messages
.Where(c => c.CreatedBy == req.UserId)
.Where(c => c.ParentId == null)
.ToListAsync(cancellationToken: ct);
.ToListAsync(ct);
var result = await Task.WhenAll(
MessageDto[] result = await Task.WhenAll(
messages.Select(async message =>
{
var user = await userLookup.GetUserAsync(message.CreatedBy, ct);
UserReference? user = await userLookup.GetUserAsync(message.CreatedBy, ct);
return new MessageDto
{

View File

@@ -31,7 +31,7 @@ public class GetReplies(
GetRepliesRequest req,
CancellationToken ct)
{
var replies = await context.GetMessagesAsync(
IEnumerable<MessageDto> replies = await context.GetMessagesAsync(
req.SubjectId,
req.ParentId,
req.LastId,