using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Migrations.Operations; using Microsoft.EntityFrameworkCore.Migrations.Operations.Builders; using Oqtane.Databases.Interfaces; using Oqtane.Interfaces; // ReSharper disable MemberCanBePrivate.Global // ReSharper disable UnusedAutoPropertyAccessor.Global namespace Oqtane.Migrations.EntityBuilders { public class NotificationEntityBuilder : DeletableBaseEntityBuilder { private const string _entityTableName = "Notification"; private readonly PrimaryKey _primaryKey = new("PK_Notification", x => x.NotificationId); private readonly ForeignKey _siteForeignKey = new("FK_Notification_Site", x => x.SiteId, "Site", "SiteId", ReferentialAction.Cascade); public NotificationEntityBuilder(MigrationBuilder migrationBuilder, IDatabase database) : base(migrationBuilder, database) { EntityTableName = _entityTableName; PrimaryKey = _primaryKey; ForeignKeys.Add(_siteForeignKey); } protected override NotificationEntityBuilder BuildTable(ColumnsBuilder table) { NotificationId = AddAutoIncrementColumn(table,"NotificationId"); SiteId = AddIntegerColumn(table,"SiteId"); FromUserId = AddIntegerColumn(table,"FromUserId", true); ToUserId = AddIntegerColumn(table,"ToUserId", true); ToEmail = AddStringColumn(table,"ToEmail", 256); ParentId = AddIntegerColumn(table,"ParentId", true); Subject = AddStringColumn(table,"Subject", 256); Body = AddMaxStringColumn(table,"Body"); CreatedOn = AddDateTimeColumn(table,"CreatedOn"); IsDelivered = AddBooleanColumn(table,"IsDelivered"); DeliveredOn = AddDateTimeColumn(table,"DeliveredOn", true); AddDeletableColumns(table); return this; } public OperationBuilder NotificationId { get; set; } public OperationBuilder SiteId { get; set; } public OperationBuilder FromUserId { get; set; } public OperationBuilder ToUserId { get; set; } public OperationBuilder ToEmail { get; set; } public OperationBuilder ParentId { get; set; } public OperationBuilder Subject { get; set; } public OperationBuilder Body { get; set; } public OperationBuilder CreatedOn { get; set; } public OperationBuilder IsDelivered { get; set; } public OperationBuilder DeliveredOn { get; set; } } }