using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Oqtane.Databases.Interfaces; using Oqtane.Migrations; using SZUAbsolventenverein.Module.HallOfFame.Migrations.EntityBuilders; using SZUAbsolventenverein.Module.HallOfFame.Repository; namespace SZUAbsolventenverein.Module.HallOfFame.Migrations { [DbContext(typeof(HallOfFameContext))] [Migration("SZUAbsolventenverein.Module.HallOfFame.01.00.00.01")] public class AddHallOfFameColumns : MultiDatabaseMigration { public AddHallOfFameColumns(IDatabase database) : base(database) { } protected override void Up(MigrationBuilder migrationBuilder) { var entityBuilder = new HallOfFameEntityBuilder(migrationBuilder, ActiveDatabase); // Add new columns manually since we are upgrading an existing table // Note: Integer columns are generated as default/nullable depending on definition, Oqtane Helpers handle generic types. // Using logic similar to Oqtane.Migrations.EntityBuilders if (ActiveDatabase.Name == "Sqlite") // Sqlite specific or generic { // Generic AddColumn: Table, Name, Type, Nullable // However, Oqtane EntityBuilder usually builds tables. // We will use migrationBuilder directly via helper if possible or standard AddColumn. migrationBuilder.AddColumn( name: "Year", table: "SZUAbsolventenvereinHallOfFame", nullable: false, defaultValue: 0); migrationBuilder.AddColumn( name: "Description", table: "SZUAbsolventenvereinHallOfFame", nullable: true); // Allow nulls initially or empty? MaxString usually nullable in Oqtane context? Let's check. migrationBuilder.AddColumn( name: "Image", table: "SZUAbsolventenvereinHallOfFame", nullable: true); migrationBuilder.AddColumn( name: "Link", table: "SZUAbsolventenvereinHallOfFame", nullable: true); migrationBuilder.AddColumn( name: "Status", table: "SZUAbsolventenvereinHallOfFame", maxLength: 50, nullable: true); migrationBuilder.AddColumn( name: "UserId", table: "SZUAbsolventenvereinHallOfFame", nullable: false, defaultValue: 0); } else { // For SQL Server / others, simply use same AddColumn but allow EF Core to handle types migrationBuilder.AddColumn( name: "Year", table: "SZUAbsolventenvereinHallOfFame", nullable: false, defaultValue: 0); migrationBuilder.AddColumn( name: "Description", table: "SZUAbsolventenvereinHallOfFame", nullable: true); migrationBuilder.AddColumn( name: "Image", table: "SZUAbsolventenvereinHallOfFame", nullable: true); migrationBuilder.AddColumn( name: "Link", table: "SZUAbsolventenvereinHallOfFame", nullable: true); migrationBuilder.AddColumn( name: "Status", table: "SZUAbsolventenvereinHallOfFame", maxLength: 50, nullable: true); migrationBuilder.AddColumn( name: "UserId", table: "SZUAbsolventenvereinHallOfFame", nullable: false, defaultValue: 0); } } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropColumn( name: "Year", table: "SZUAbsolventenvereinHallOfFame"); migrationBuilder.DropColumn( name: "Description", table: "SZUAbsolventenvereinHallOfFame"); migrationBuilder.DropColumn( name: "Image", table: "SZUAbsolventenvereinHallOfFame"); migrationBuilder.DropColumn( name: "Link", table: "SZUAbsolventenvereinHallOfFame"); migrationBuilder.DropColumn( name: "Status", table: "SZUAbsolventenvereinHallOfFame"); migrationBuilder.DropColumn( name: "UserId", table: "SZUAbsolventenvereinHallOfFame"); } } }