using Microsoft.EntityFrameworkCore.Migrations;

#nullable disable

namespace ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Migrations
{
    /// <summary>
    /// Adds the <c>SourceNode</c> column to the central <c>Notifications</c> table (#21,
    /// SourceNode-stamping). <c>SourceNode</c> identifies the cluster node that produced the
    /// notification (e.g. <c>node-a</c>, <c>central-a</c>) — ASCII-only, so <c>varchar(64)</c>
    /// not <c>nvarchar</c>. <c>NULL</c> is valid for rows that pre-date this feature.
    ///
    /// The change is purely additive: <c>SourceNode varchar(64) NULL</c> is added with no
    /// default, so the operation is a metadata-only <c>ALTER TABLE … ADD</c>. Unlike
    /// <c>AuditLog</c>, the <c>Notifications</c> table is NOT partitioned, so a plain
    /// <c>ADD</c> is fine. No index — Notification Outbox KPIs are per-site, not per-node,
    /// on this table; <c>SourceNode</c> is only echoed onto <c>NotifyDeliver</c> audit rows
    /// (#23) for cross-row correlation. Historical rows stay <c>NULL</c>.
    /// </summary>
    public partial class AddNotificationSourceNode : Migration
    {
        /// <inheritdoc />
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.AddColumn<string>(
                name: "SourceNode",
                table: "Notifications",
                type: "varchar(64)",
                unicode: false,
                maxLength: 64,
                nullable: true);
        }

        /// <inheritdoc />
        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropColumn(
                name: "SourceNode",
                table: "Notifications");
        }
    }
}
