namespace Socialize.Modules.ContentItems.Data; public static class ContentItemModelConfiguration { public static ModelBuilder ConfigureContentItemsModule(this ModelBuilder modelBuilder) { modelBuilder.Entity(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(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; } }