Files
social-media/backend/src/Socialize.Api/Modules/ContentItems/Data/ContentItemModelConfiguration.cs
Jonathan Bourdon b66c10b681
Some checks failed
Backend CI/CD / build_and_deploy (push) Has been cancelled
Frontend CI/CD / build_and_deploy (push) Has been cancelled
Add calendar integrations and collaboration updates
2026-05-05 15:25:53 -04:00

64 lines
3.0 KiB
C#

using Microsoft.EntityFrameworkCore;
namespace Socialize.Api.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.CampaignId);
});
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();
});
modelBuilder.Entity<ContentItemActivityEntry>(entry =>
{
entry.ToTable("ContentItemActivityEntries");
entry.HasKey(x => x.Id);
entry.Property(x => x.EventType).HasMaxLength(128).IsRequired();
entry.Property(x => x.EntityType).HasMaxLength(128).IsRequired();
entry.Property(x => x.Summary).HasMaxLength(1024).IsRequired();
entry.Property(x => x.ActorEmail).HasMaxLength(256);
entry.Property(x => x.MetadataJson).HasColumnType("jsonb");
entry.Property(x => x.CreatedAt)
.ValueGeneratedOnAdd()
.HasDefaultValueSql("CURRENT_TIMESTAMP");
entry.HasIndex(x => x.WorkspaceId);
entry.HasIndex(x => x.ContentItemId);
entry.HasIndex(x => new { x.ContentItemId, x.CreatedAt });
});
return modelBuilder;
}
}