using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Migrations.Operations; using Microsoft.EntityFrameworkCore.Migrations.Operations.Builders; using Oqtane.Interfaces; using Oqtane.Migrations.Extensions; // ReSharper disable MemberCanBePrivate.Global // ReSharper disable UnusedAutoPropertyAccessor.Global namespace Oqtane.Migrations.EntityBuilders { public class ModuleEntityBuilder : AuditableBaseEntityBuilder { private const string _entityTableName = "Module"; private readonly PrimaryKey _primaryKey = new("PK_Module", x => x.ModuleId); private readonly ForeignKey _siteForeignKey = new("FK_Module_Site", x => x.SiteId, "Site", "SiteId", ReferentialAction.Cascade); public ModuleEntityBuilder(MigrationBuilder migrationBuilder, IOqtaneDatabase database) : base(migrationBuilder, database) { EntityTableName = _entityTableName; PrimaryKey = _primaryKey; ForeignKeys.Add(_siteForeignKey); } protected override ModuleEntityBuilder BuildTable(ColumnsBuilder table) { ModuleId = ActiveDatabase.AddAutoIncrementColumn(table,"ModuleId"); SiteId = table.AddIntegerColumn("SiteId"); ModuleDefinitionName = table.AddStringColumn("ModuleDefinitionName", 200); AllPages = table.AddBooleanColumn("AllPages"); AddAuditableColumns(table); return this; } public OperationBuilder ModuleId { get; private set; } public OperationBuilder SiteId { get; private set; } public OperationBuilder ModuleDefinitionName { get; private set; } public OperationBuilder AllPages { get; private set; } } }