45 lines
2.1 KiB
C#
45 lines
2.1 KiB
C#
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Socialize.Api.Modules.Workspaces.Data;
|
|
|
|
public static class WorkspaceModelConfiguration
|
|
{
|
|
public static ModelBuilder ConfigureWorkspacesModule(this ModelBuilder modelBuilder)
|
|
{
|
|
modelBuilder.Entity<Workspace>(workspace =>
|
|
{
|
|
workspace.ToTable("Workspaces");
|
|
workspace.HasKey(x => x.Id);
|
|
workspace.Property(x => x.Name).HasMaxLength(256).IsRequired();
|
|
workspace.Property(x => x.Slug).HasMaxLength(128).IsRequired();
|
|
workspace.Property(x => x.LogoUrl).HasMaxLength(2048);
|
|
workspace.Property(x => x.TimeZone).HasMaxLength(128).IsRequired();
|
|
workspace.Property(x => x.ApprovalMode).HasMaxLength(32).IsRequired().HasDefaultValue("Required");
|
|
workspace.Property(x => x.SchedulePostsAutomaticallyOnApproval).HasDefaultValue(false);
|
|
workspace.Property(x => x.LockContentAfterApproval).HasDefaultValue(false);
|
|
workspace.Property(x => x.SendAutomaticApprovalReminders).HasDefaultValue(false);
|
|
workspace.Property(x => x.CreatedAt)
|
|
.ValueGeneratedOnAdd()
|
|
.HasDefaultValueSql("CURRENT_TIMESTAMP");
|
|
workspace.HasIndex(x => x.Slug).IsUnique();
|
|
workspace.HasIndex(x => x.OwnerUserId);
|
|
});
|
|
|
|
modelBuilder.Entity<WorkspaceInvite>(workspaceInvite =>
|
|
{
|
|
workspaceInvite.ToTable("WorkspaceInvites");
|
|
workspaceInvite.HasKey(x => x.Id);
|
|
workspaceInvite.Property(x => x.Email).HasMaxLength(256).IsRequired();
|
|
workspaceInvite.Property(x => x.Role).HasMaxLength(64).IsRequired();
|
|
workspaceInvite.Property(x => x.Status).HasMaxLength(64).IsRequired();
|
|
workspaceInvite.Property(x => x.CreatedAt)
|
|
.ValueGeneratedOnAdd()
|
|
.HasDefaultValueSql("CURRENT_TIMESTAMP");
|
|
workspaceInvite.HasIndex(x => x.WorkspaceId);
|
|
workspaceInvite.HasIndex(x => new { x.WorkspaceId, x.Email, x.Status });
|
|
});
|
|
|
|
return modelBuilder;
|
|
}
|
|
}
|