Files
Module.HallOfFame/Server/Migrations/01000001_AddHallOfFameColumns.cs
Adam Gaiswinkler 7114904412 Feature: Hall of Fame Module Implementation (1.0.1)
- Added Hall of Fame module logic (Models, Controller, Service).
- Implemented 'One Entry Per User' and 'Publish/Draft' workflow.
- Updated UI to Grid Layout (Index.razor) and Unified Form (Edit.razor).
- Added Database Migration 01000001 for new columns.
- Bumped version to 1.0.1.
2026-01-15 00:01:55 +01:00

131 lines
5.0 KiB
C#

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<int>(
name: "Year",
table: "SZUAbsolventenvereinHallOfFame",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<string>(
name: "Description",
table: "SZUAbsolventenvereinHallOfFame",
nullable: true); // Allow nulls initially or empty? MaxString usually nullable in Oqtane context? Let's check.
migrationBuilder.AddColumn<string>(
name: "Image",
table: "SZUAbsolventenvereinHallOfFame",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Link",
table: "SZUAbsolventenvereinHallOfFame",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Status",
table: "SZUAbsolventenvereinHallOfFame",
maxLength: 50,
nullable: true);
migrationBuilder.AddColumn<int>(
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<int>(
name: "Year",
table: "SZUAbsolventenvereinHallOfFame",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<string>(
name: "Description",
table: "SZUAbsolventenvereinHallOfFame",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Image",
table: "SZUAbsolventenvereinHallOfFame",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Link",
table: "SZUAbsolventenvereinHallOfFame",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Status",
table: "SZUAbsolventenvereinHallOfFame",
maxLength: 50,
nullable: true);
migrationBuilder.AddColumn<int>(
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");
}
}
}