using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Migrations.Operations; using Microsoft.EntityFrameworkCore.Migrations.Operations.Builders; using Oqtane.Migrations.Extensions; // ReSharper disable MemberCanBePrivate.Global // ReSharper disable UnusedAutoPropertyAccessor.Global namespace Oqtane.Migrations.EntityBuilders { public class PageEntityBuilder : DeletableAuditableBaseEntityBuilder { private const string _entityTableName = "Page"; private readonly PrimaryKey _primaryKey = new("PK_Page", x => x.PageId); private readonly ForeignKey _siteForeignKey = new("FK_Page_Site", x => x.SiteId, "Site", "SiteId", ReferentialAction.Cascade); public PageEntityBuilder(MigrationBuilder migrationBuilder) : base(migrationBuilder) { EntityTableName = _entityTableName; PrimaryKey = _primaryKey; ForeignKeys.Add(_siteForeignKey); } protected override PageEntityBuilder BuildTable(ColumnsBuilder table) { PageId = table.AddAutoIncrementColumn("PageId"); SiteId = table.AddIntegerColumn("SiteId"); Path = table.AddStringColumn("Path", 50); Name = table.AddStringColumn("Name", 50); Title = table.AddStringColumn("Title", 200, true); ThemeType = table.AddStringColumn("ThemeType", 200, true); Icon = table.AddStringColumn("Icon", 50); ParentId = table.AddIntegerColumn("ParentId", true); Order = table.AddIntegerColumn("Order"); IsNavigation = table.AddBooleanColumn("IsNavigation"); Url = table.AddStringColumn("Url", 500, true); LayoutType = table.AddStringColumn("LayoutType", 200); UserId = table.AddIntegerColumn("UserId", true); IsPersonalizable = table.AddBooleanColumn("IsPersonalizable"); DefaultContainerType = table.AddStringColumn("DefaultContainerType", 200, true); AddAuditableColumns(table); AddDeletableColumns(table); return this; } public OperationBuilder PageId { get; private set; } public OperationBuilder SiteId { get; private set; } public OperationBuilder Path { get; private set; } public OperationBuilder Name { get; private set; } public OperationBuilder Title { get; private set; } public OperationBuilder ThemeType { get; private set; } public OperationBuilder Icon { get; private set; } public OperationBuilder ParentId { get; private set; } public OperationBuilder Order { get; private set; } public OperationBuilder IsNavigation { get; private set; } public OperationBuilder Url { get; private set; } public OperationBuilder LayoutType { get; private set; } public OperationBuilder UserId { get; private set; } public OperationBuilder IsPersonalizable { get; private set; } public OperationBuilder DefaultContainerType { get; private set; } } }