using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Migrations.Operations; using Microsoft.EntityFrameworkCore.Migrations.Operations.Builders; using Oqtane.Databases.Interfaces; using Oqtane.Migrations; using Oqtane.Migrations.EntityBuilders; namespace SZUAbsolventenverein.Module.EventRegistration.Migrations.EntityBuilders { public class EventResponseEntityBuilder : AuditableBaseEntityBuilder { private const string _entityTableName = "SZUAbsolventenvereinEventResponse"; private readonly PrimaryKey _primaryKey = new("PK_SZUAbsolventenvereinEventResponse", x => x.EventResponseId); private readonly ForeignKey _moduleForeignKey = new("FK_SZUAbsolventenvereinEventResponse_Module", x => x.ModuleId, "Module", "ModuleId", ReferentialAction.Cascade); private readonly ForeignKey _eventForeignKey = new("FK_SZUAbsolventenvereinEventResponse_Event", x => x.EventRegistrationId, "SZUAbsolventenvereinEvent", "EventId", ReferentialAction.Cascade); private readonly ForeignKey _ownerForeignKey = new("FK_SZUAbsolventenvereinEventResponse_User_Owner", x => x.OwnerId, "User", "UserId", ReferentialAction.Cascade); public EventResponseEntityBuilder(MigrationBuilder migrationBuilder, IDatabase database) : base(migrationBuilder, database) { EntityTableName = _entityTableName; PrimaryKey = _primaryKey; ForeignKeys.Add(_moduleForeignKey); ForeignKeys.Add(_eventForeignKey); ForeignKeys.Add(_ownerForeignKey); } protected override EventResponseEntityBuilder BuildTable(ColumnsBuilder table) { EventResponseId = AddAutoIncrementColumn(table, "EventResponseId"); ResponseType = AddBooleanColumn(table, "ResponseType"); OwnerId = AddIntegerColumn(table, "OwnerId"); EventRegistrationId = AddIntegerColumn(table,"EventRegistrationId"); ModuleId = AddIntegerColumn(table,"ModuleId"); AddAuditableColumns(table); return this; } public OperationBuilder EventResponseId { get; set; } public OperationBuilder ResponseType { get; set; } public OperationBuilder OwnerId { get; set; } public OperationBuilder EventRegistrationId { get; set; } public OperationBuilder ModuleId { get; set; } } }