feat: add feedback backend foundation
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Socialize.Api.Modules.Feedback.Data;
|
||||
|
||||
public static class FeedbackModelConfiguration
|
||||
{
|
||||
public static ModelBuilder ConfigureFeedbackModule(this ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<FeedbackReport>(feedback =>
|
||||
{
|
||||
feedback.ToTable("FeedbackReports");
|
||||
feedback.HasKey(x => x.Id);
|
||||
feedback.Property(x => x.Type).HasConversion<string>().HasMaxLength(32).IsRequired();
|
||||
feedback.Property(x => x.Status).HasConversion<string>().HasMaxLength(32).IsRequired();
|
||||
feedback.Property(x => x.Description).HasMaxLength(8000).IsRequired();
|
||||
feedback.Property(x => x.ReporterDisplayName).HasMaxLength(256).IsRequired();
|
||||
feedback.Property(x => x.ReporterEmail).HasMaxLength(256).IsRequired();
|
||||
feedback.Property(x => x.SubmittedPath).HasMaxLength(2048).IsRequired();
|
||||
feedback.Property(x => x.BrowserUserAgent).HasMaxLength(1024);
|
||||
feedback.Property(x => x.AppVersion).HasMaxLength(128);
|
||||
feedback.Property(x => x.WorkspaceName).HasMaxLength(256);
|
||||
feedback.Property(x => x.ClientName).HasMaxLength(256);
|
||||
feedback.Property(x => x.ProjectName).HasMaxLength(256);
|
||||
feedback.Property(x => x.ContentItemTitle).HasMaxLength(256);
|
||||
feedback.Property(x => x.CancellationReason).HasMaxLength(2000);
|
||||
feedback.Property(x => x.CreatedAt).ValueGeneratedOnAdd().HasDefaultValueSql("CURRENT_TIMESTAMP");
|
||||
feedback.HasIndex(x => x.ReporterUserId);
|
||||
feedback.HasIndex(x => x.Status);
|
||||
feedback.HasIndex(x => x.Type);
|
||||
feedback.HasIndex(x => x.WorkspaceId);
|
||||
feedback.HasIndex(x => x.LastActivityAt);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<FeedbackTag>(tag =>
|
||||
{
|
||||
tag.ToTable("FeedbackTags");
|
||||
tag.HasKey(x => x.Id);
|
||||
tag.Property(x => x.Name).HasMaxLength(64).IsRequired();
|
||||
tag.Property(x => x.NormalizedName).HasMaxLength(64).IsRequired();
|
||||
tag.HasIndex(x => x.NormalizedName);
|
||||
tag.HasIndex(x => new { x.FeedbackReportId, x.NormalizedName }).IsUnique();
|
||||
tag.HasOne(x => x.FeedbackReport)
|
||||
.WithMany(x => x.Tags)
|
||||
.HasForeignKey(x => x.FeedbackReportId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
return modelBuilder;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user