shoc-backend/Data.SeaHavenIndustries/Migrations/20260731230547_SH198_VendorCompanyNotesAndRowVersion.cs
Alexandre Brandizzi 669e9b2932
Some checks are pending
Validate and deploy dev / Validate deployable source bundle (push) Waiting to run
Validate and deploy dev / Deploy shoc-backend to Elastic Beanstalk dev (push) Blocked by required conditions
feat(vendors): add company roster management (SH-198) (#48)
* feat(vendors): add company roster management

* fix(security): remove request-controlled write guards

* fix(vendors): synchronize roster company fields

* fix(vendors): source facets from companies
2026-08-03 17:53:24 -03:00

67 lines
2 KiB
C#

using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Data.SeaHavenIndustries.Migrations
{
/// <inheritdoc />
public partial class SH198_VendorCompanyNotesAndRowVersion : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Notes",
table: "VendorCompanies",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<byte[]>(
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;
");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Notes",
table: "VendorCompanies");
migrationBuilder.DropColumn(
name: "RowVersion",
table: "VendorCompanies");
}
}
}