mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-10-07 16:19:07 +00:00
Make Phase7 EF-discoverable with idempotent DDL, shrink SiteCode and InternalWONumber before Phase4 search indexes on this branch, align MaxLength/Fluent indexes with the snapshot, and add the missing Events calendar table migration so the model has no pending changes.
63 lines
2.5 KiB
C#
63 lines
2.5 KiB
C#
using Data.SeaHavenIndustries;
|
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
|
using Microsoft.EntityFrameworkCore.Migrations;
|
|
|
|
#nullable disable
|
|
|
|
namespace Data.SeaHavenIndustries.Migrations
|
|
{
|
|
/// <inheritdoc />
|
|
[DbContext(typeof(ApplicationDbContext))]
|
|
[Migration("20260713120000_Phase7_ExternalWorkOrderIdUnique")]
|
|
public partial class Phase7_ExternalWorkOrderIdUnique : Migration
|
|
{
|
|
/// <inheritdoc />
|
|
protected override void Up(MigrationBuilder migrationBuilder)
|
|
{
|
|
// Idempotent: column may already be nvarchar(450) in some environments.
|
|
migrationBuilder.Sql(@"
|
|
IF COL_LENGTH('workOrders', 'ExternalWorkOrderId') IS NOT NULL
|
|
AND EXISTS (
|
|
SELECT 1
|
|
FROM sys.columns c
|
|
INNER JOIN sys.types t ON c.user_type_id = t.user_type_id
|
|
WHERE c.object_id = OBJECT_ID(N'dbo.workOrders')
|
|
AND c.name = N'ExternalWorkOrderId'
|
|
AND t.name = N'nvarchar'
|
|
AND c.max_length = -1)
|
|
BEGIN
|
|
ALTER TABLE workOrders ALTER COLUMN ExternalWorkOrderId nvarchar(450) NULL;
|
|
END
|
|
");
|
|
|
|
migrationBuilder.Sql(@"
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM sys.indexes
|
|
WHERE name = N'IX_workOrders_ExternalWorkOrderId'
|
|
AND object_id = OBJECT_ID(N'dbo.workOrders'))
|
|
BEGIN
|
|
CREATE UNIQUE INDEX IX_workOrders_ExternalWorkOrderId
|
|
ON workOrders (ExternalWorkOrderId)
|
|
WHERE [ExternalWorkOrderId] IS NOT NULL AND [ExternalWorkOrderId] <> '';
|
|
END
|
|
");
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
protected override void Down(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.Sql(@"
|
|
IF EXISTS (
|
|
SELECT 1 FROM sys.indexes
|
|
WHERE name = N'IX_workOrders_ExternalWorkOrderId'
|
|
AND object_id = OBJECT_ID(N'dbo.workOrders'))
|
|
DROP INDEX IX_workOrders_ExternalWorkOrderId ON workOrders;
|
|
");
|
|
|
|
migrationBuilder.Sql(@"
|
|
IF COL_LENGTH('workOrders', 'ExternalWorkOrderId') IS NOT NULL
|
|
ALTER TABLE workOrders ALTER COLUMN ExternalWorkOrderId nvarchar(max) NULL;
|
|
");
|
|
}
|
|
}
|
|
}
|