45 lines
2.1 KiB
C#
45 lines
2.1 KiB
C#
namespace Socialize.Modules.ContentItems.Data;
|
|
|
|
public static class ContentItemModelConfiguration
|
|
{
|
|
public static ModelBuilder ConfigureContentItemsModule(this ModelBuilder modelBuilder)
|
|
{
|
|
modelBuilder.Entity<ContentItem>(contentItem =>
|
|
{
|
|
contentItem.ToTable("ContentItems");
|
|
contentItem.HasKey(x => x.Id);
|
|
contentItem.Property(x => x.Title).HasMaxLength(256).IsRequired();
|
|
contentItem.Property(x => x.PublicationMessage).HasMaxLength(4000).IsRequired();
|
|
contentItem.Property(x => x.PublicationTargets).HasMaxLength(512).IsRequired();
|
|
contentItem.Property(x => x.Hashtags).HasMaxLength(1024);
|
|
contentItem.Property(x => x.Status).HasMaxLength(64).IsRequired();
|
|
contentItem.Property(x => x.CurrentRevisionLabel).HasMaxLength(32).IsRequired();
|
|
contentItem.Property(x => x.CreatedAt)
|
|
.ValueGeneratedOnAdd()
|
|
.HasDefaultValueSql("CURRENT_TIMESTAMP");
|
|
contentItem.HasIndex(x => x.WorkspaceId);
|
|
contentItem.HasIndex(x => x.ClientId);
|
|
contentItem.HasIndex(x => x.ProjectId);
|
|
});
|
|
|
|
modelBuilder.Entity<ContentItemRevision>(revision =>
|
|
{
|
|
revision.ToTable("ContentItemRevisions");
|
|
revision.HasKey(x => x.Id);
|
|
revision.Property(x => x.RevisionLabel).HasMaxLength(32).IsRequired();
|
|
revision.Property(x => x.Title).HasMaxLength(256).IsRequired();
|
|
revision.Property(x => x.PublicationMessage).HasMaxLength(4000).IsRequired();
|
|
revision.Property(x => x.PublicationTargets).HasMaxLength(512).IsRequired();
|
|
revision.Property(x => x.Hashtags).HasMaxLength(1024);
|
|
revision.Property(x => x.ChangeSummary).HasMaxLength(1024);
|
|
revision.Property(x => x.CreatedAt)
|
|
.ValueGeneratedOnAdd()
|
|
.HasDefaultValueSql("CURRENT_TIMESTAMP");
|
|
revision.HasIndex(x => x.ContentItemId);
|
|
revision.HasIndex(x => new { x.ContentItemId, x.RevisionNumber }).IsUnique();
|
|
});
|
|
|
|
return modelBuilder;
|
|
}
|
|
}
|