Split Slug from Creator

This commit is contained in:
2025-04-15 03:58:13 -04:00
parent d3a4f66b0e
commit a332b1082d
16 changed files with 545 additions and 49 deletions

View File

@@ -10,8 +10,8 @@ namespace Hutopy.Web.Features.Contents.Handlers;
[PublicAPI]
public record ReserveSlugRequest
{
public string Slug { get; set; } = null!;
public required Guid ReservationId { get; set; }
public string Slug { get; set; } = null!;
}
[PublicAPI]
@@ -46,17 +46,26 @@ public sealed class ReserveSlug(
try
{
await context.Slugs.AddAsync(
new Slugs
{
Id = req.ReservationId,
Active = false,
Name = req.Slug,
ReservedUntil = DateTimeOffset.UtcNow + opts.Value.SlugReservationDuration,
CreatedBy = User.GetUserId(),
},
var reservation = await context.Slugs.FirstOrDefaultAsync(
s => s.Id == req.ReservationId && s.CreatedBy == User.GetUserId(),
cancellationToken: ct);
if (reservation == null)
{
reservation = new Slugs
{
Id = req.ReservationId,
CreatedBy = User.GetUserId(),
CreatedAt = DateTimeOffset.UtcNow,
};
context.Slugs.Attach(reservation);
context.Entry(reservation).State = EntityState.Added;
}
reservation.Name = req.Slug;
reservation.ReservedUntil = DateTimeOffset.UtcNow + opts.Value.SlugReservationDuration;
await context.SaveChangesAsync(ct);
await transaction.CommitAsync(ct);