using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Data.SeaHavenIndustries.Migrations
{
///
public partial class SH198_VendorCompanyNotesAndRowVersion : Migration
{
///
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn(
name: "Notes",
table: "VendorCompanies",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn(
name: "RowVersion",
table: "VendorCompanies",
type: "rowversion",
rowVersion: true,
nullable: true);
// Backfill VendorCompany.Notes (vendor-directory source) deterministically
// from the most recently modified then highest-id nonempty Vendor.Notes.
// Vendor.Notes is retained separately for work-order editor compatibility;
// roster/directory paths read VendorCompany.Notes.
migrationBuilder.Sql(@"
;WITH SourceNotes AS (
SELECT
v.[CompanyId],
v.[Notes],
ROW_NUMBER() OVER (
PARTITION BY v.[CompanyId]
ORDER BY
v.[LastModificationTime] DESC,
v.[Id] DESC
) AS [RowNumber]
FROM [Vendors] v
WHERE v.[CompanyId] IS NOT NULL
AND v.[Notes] IS NOT NULL
AND LTRIM(RTRIM(v.[Notes])) <> ''
)
UPDATE vc
SET vc.[Notes] = src.[Notes]
FROM [VendorCompanies] vc
INNER JOIN SourceNotes src
ON src.[CompanyId] = vc.[Id]
WHERE src.[RowNumber] = 1;
");
}
///
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Notes",
table: "VendorCompanies");
migrationBuilder.DropColumn(
name: "RowVersion",
table: "VendorCompanies");
}
}
}