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 LogEntityBuilder : BaseEntityBuilder { private const string _entityTableName = "Log"; private readonly PrimaryKey _primaryKey = new("PK_Log", x => x.LogId); private readonly ForeignKey _siteForeignKey = new("FK_Log_Site", x => x.SiteId, "Site", "SiteId", ReferentialAction.Cascade); public LogEntityBuilder(MigrationBuilder migrationBuilder) : base(migrationBuilder) { EntityTableName = _entityTableName; PrimaryKey = _primaryKey; ForeignKeys.Add(_siteForeignKey); } protected override LogEntityBuilder BuildTable(ColumnsBuilder table) { LogId = table.AddAutoIncrementColumn("LogId"); SiteId = table.AddIntegerColumn("SiteId", true); LogDate = table.AddDateTimeColumn("LogDate"); PageId = table.AddIntegerColumn("PageId", true); ModuleId = table.AddIntegerColumn("ModuleId", true); UserId = table.AddIntegerColumn("UserId", true); Url = table.AddStringColumn("Url", 2048); Server = table.AddStringColumn("Server", 200); Category = table.AddStringColumn("Category", 200); Feature = table.AddStringColumn("Feature", 200); Function = table.AddStringColumn("Function", 20); Level = table.AddStringColumn("Level", 20); Message = table.AddMaxStringColumn("Message"); MessageTemplate = table.AddMaxStringColumn("MessageTemplate"); Exception = table.AddMaxStringColumn("Exception", true); Properties = table.AddMaxStringColumn("Properties", true); return this; } public OperationBuilder LogId { get; set; } public OperationBuilder SiteId { get; set; } public OperationBuilder LogDate { get; set; } public OperationBuilder PageId { get; set; } public OperationBuilder ModuleId { get; set; } public OperationBuilder UserId { get; set; } public OperationBuilder Url { get; set; } public OperationBuilder Server { get; set; } public OperationBuilder Category { get; set; } public OperationBuilder Feature { get; set; } public OperationBuilder Function { get; set; } public OperationBuilder Level { get; set; } public OperationBuilder Message { get; set; } public OperationBuilder MessageTemplate { get; set; } public OperationBuilder Exception { get; set; } public OperationBuilder Properties { get; set; } } }