diff --git a/src/Web/Messages/Data/Message.cs b/src/Web/Messages/Data/Message.cs index df0fa50..3baf749 100644 --- a/src/Web/Messages/Data/Message.cs +++ b/src/Web/Messages/Data/Message.cs @@ -3,11 +3,9 @@ public class Message { public Guid Id { get; init; } - public Guid ContentId { get; init; } // works for any - VideoId, ChatId, RoomId, xxxId, ForumId + public Guid SubjectId { get; init; } public Guid CreatedBy { get; init; } public DateTime CreatedAt { get; } - public Guid ParentId { get; init; } - public string Value { get; init; } = null!; } diff --git a/src/Web/Messages/Handlers/GetMessages.cs b/src/Web/Messages/Handlers/GetMessages.cs index d7afb3f..28ed8f6 100644 --- a/src/Web/Messages/Handlers/GetMessages.cs +++ b/src/Web/Messages/Handlers/GetMessages.cs @@ -11,18 +11,18 @@ public class GetMessages( public override void Configure() { Tags("Messages"); - Get("/api/messages/{ContentId:guid}"); + Get("/api/messages/{SubjectId:guid}"); AllowAnonymous(); } public override async Task HandleAsync( CancellationToken ct) { - var contentId = Route("ContentId"); + var subjectId = Route("SubjectId"); var comments = await context .Messages - .Where(c => c.ContentId == contentId) + .Where(c => c.SubjectId == subjectId) .ToListAsync(cancellationToken: ct); await SendAsync(comments, cancellation: ct); diff --git a/src/Web/Messages/Handlers/PostMessage.cs b/src/Web/Messages/Handlers/PostMessage.cs index 46a316c..0380489 100644 --- a/src/Web/Messages/Handlers/PostMessage.cs +++ b/src/Web/Messages/Handlers/PostMessage.cs @@ -5,7 +5,7 @@ using Hutopy.Web.Messages.Data; namespace Hutopy.Web.Messages.Handlers; public record PostMessageRequest( - Guid ContentId, + Guid SubjectId, string Message); public class PostMessage( @@ -25,7 +25,7 @@ public class PostMessage( { await context.Messages.AddAsync( new Message { - ContentId = req.ContentId, + SubjectId = req.SubjectId, CreatedBy = User.GetUserId(), Value = req.Message }, ct); diff --git a/src/Web/Messages/Handlers/PostReplyMessage.cs b/src/Web/Messages/Handlers/PostReplyMessage.cs index 5a9bef9..616f6d9 100644 --- a/src/Web/Messages/Handlers/PostReplyMessage.cs +++ b/src/Web/Messages/Handlers/PostReplyMessage.cs @@ -5,7 +5,7 @@ using Hutopy.Web.Messages.Data; namespace Hutopy.Web.Messages.Handlers; public record PostReplyMessageRequest( - Guid ContentId, + Guid SubjectId, Guid ParentId, string Message); @@ -26,7 +26,7 @@ public sealed class PostReplyMessage( await context.Messages.AddAsync( new Message { - ContentId = req.ContentId, + SubjectId = req.SubjectId, ParentId = req.ParentId, CreatedBy = User.GetUserId(), Value = req.Message diff --git a/src/Web/Migrations/20240707023204_UseSubjectId_InsteadOfContentId.Designer.cs b/src/Web/Migrations/20240707023204_UseSubjectId_InsteadOfContentId.Designer.cs new file mode 100644 index 0000000..da741d4 --- /dev/null +++ b/src/Web/Migrations/20240707023204_UseSubjectId_InsteadOfContentId.Designer.cs @@ -0,0 +1,58 @@ +// +using System; +using Hutopy.Web.Contents.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Hutopy.Web.Migrations +{ + [DbContext(typeof(ContentDbContext))] + [Migration("20240707023204_UseSubjectId_InsteadOfContentId")] + partial class UseSubjectId_InsteadOfContentId + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.3") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Hutopy.Web.Contents.Data.Content", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime2") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("CreatedBy") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("Uri") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Contents"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Web/Migrations/20240707023204_UseSubjectId_InsteadOfContentId.cs b/src/Web/Migrations/20240707023204_UseSubjectId_InsteadOfContentId.cs new file mode 100644 index 0000000..02c3670 --- /dev/null +++ b/src/Web/Migrations/20240707023204_UseSubjectId_InsteadOfContentId.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Hutopy.Web.Migrations +{ + /// + public partial class UseSubjectId_InsteadOfContentId : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +}