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 LanguageEntityBuilder : AuditableBaseEntityBuilder { private const string _entityTableName = "Language"; private readonly PrimaryKey _primaryKey = new("PK_Language", x => x.LanguageId); private readonly ForeignKey _siteForeignKey = new("FK_Language_Site", x => x.SiteId, "Site", "SiteId", ReferentialAction.Cascade); public LanguageEntityBuilder(MigrationBuilder migrationBuilder, IOqtaneDatabase database) : base(migrationBuilder, database) { EntityTableName = _entityTableName; PrimaryKey = _primaryKey; ForeignKeys.Add(_siteForeignKey); } protected override LanguageEntityBuilder BuildTable(ColumnsBuilder table) { LanguageId = AddAutoIncrementColumn(table,"LanguageId"); SiteId = AddIntegerColumn(table,"SiteId"); Name = AddStringColumn(table,"Name", 100); Code = AddStringColumn(table,"Code", 10); IsDefault = AddBooleanColumn(table,"IsDefault"); AddAuditableColumns(table); return this; } public OperationBuilder LanguageId { get; set; } public OperationBuilder SiteId { get; set; } public OperationBuilder Name { get; set; } public OperationBuilder Code { get; set; } public OperationBuilder IsDefault { get; set; } } }