using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace ZB.MOM.WW.OtOpcUa.Configuration.Migrations { /// public partial class InitialSchema : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "ConfigAuditLog", columns: table => new { AuditId = table.Column(type: "bigint", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), Timestamp = table.Column(type: "datetime2(3)", nullable: false, defaultValueSql: "SYSUTCDATETIME()"), Principal = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), EventType = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), ClusterId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), NodeId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), GenerationId = table.Column(type: "bigint", nullable: true), DetailsJson = table.Column(type: "nvarchar(max)", nullable: true) }, constraints: table => { table.PrimaryKey("PK_ConfigAuditLog", x => x.AuditId); table.CheckConstraint("CK_ConfigAuditLog_DetailsJson_IsJson", "DetailsJson IS NULL OR ISJSON(DetailsJson) = 1"); }); migrationBuilder.CreateTable( name: "ExternalIdReservation", columns: table => new { ReservationId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"), Kind = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: false), Value = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), EquipmentUuid = table.Column(type: "uniqueidentifier", nullable: false), ClusterId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), FirstPublishedAt = table.Column(type: "datetime2(3)", nullable: false, defaultValueSql: "SYSUTCDATETIME()"), FirstPublishedBy = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), LastPublishedAt = table.Column(type: "datetime2(3)", nullable: false, defaultValueSql: "SYSUTCDATETIME()"), ReleasedAt = table.Column(type: "datetime2(3)", nullable: true), ReleasedBy = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), ReleaseReason = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true) }, constraints: table => { table.PrimaryKey("PK_ExternalIdReservation", x => x.ReservationId); }); migrationBuilder.CreateTable( name: "ServerCluster", columns: table => new { ClusterId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), Enterprise = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), Site = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), NodeCount = table.Column(type: "tinyint", nullable: false), RedundancyMode = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: false), Enabled = table.Column(type: "bit", nullable: false), Notes = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true), CreatedAt = table.Column(type: "datetime2(3)", nullable: false, defaultValueSql: "SYSUTCDATETIME()"), CreatedBy = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), ModifiedAt = table.Column(type: "datetime2(3)", nullable: true), ModifiedBy = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true) }, constraints: table => { table.PrimaryKey("PK_ServerCluster", x => x.ClusterId); table.CheckConstraint("CK_ServerCluster_RedundancyMode_NodeCount", "((NodeCount = 1 AND RedundancyMode = 'None') OR (NodeCount = 2 AND RedundancyMode IN ('Warm', 'Hot')))"); }); migrationBuilder.CreateTable( name: "ClusterNode", columns: table => new { NodeId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), ClusterId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), RedundancyRole = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: false), Host = table.Column(type: "nvarchar(255)", maxLength: 255, nullable: false), OpcUaPort = table.Column(type: "int", nullable: false), DashboardPort = table.Column(type: "int", nullable: false), ApplicationUri = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), ServiceLevelBase = table.Column(type: "tinyint", nullable: false), DriverConfigOverridesJson = table.Column(type: "nvarchar(max)", nullable: true), Enabled = table.Column(type: "bit", nullable: false), LastSeenAt = table.Column(type: "datetime2(3)", nullable: true), CreatedAt = table.Column(type: "datetime2(3)", nullable: false, defaultValueSql: "SYSUTCDATETIME()"), CreatedBy = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false) }, constraints: table => { table.PrimaryKey("PK_ClusterNode", x => x.NodeId); table.ForeignKey( name: "FK_ClusterNode_ServerCluster_ClusterId", column: x => x.ClusterId, principalTable: "ServerCluster", principalColumn: "ClusterId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "ConfigGeneration", columns: table => new { GenerationId = table.Column(type: "bigint", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), ClusterId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), Status = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: false), ParentGenerationId = table.Column(type: "bigint", nullable: true), PublishedAt = table.Column(type: "datetime2(3)", nullable: true), PublishedBy = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), Notes = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true), CreatedAt = table.Column(type: "datetime2(3)", nullable: false, defaultValueSql: "SYSUTCDATETIME()"), CreatedBy = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false) }, constraints: table => { table.PrimaryKey("PK_ConfigGeneration", x => x.GenerationId); table.ForeignKey( name: "FK_ConfigGeneration_ConfigGeneration_ParentGenerationId", column: x => x.ParentGenerationId, principalTable: "ConfigGeneration", principalColumn: "GenerationId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_ConfigGeneration_ServerCluster_ClusterId", column: x => x.ClusterId, principalTable: "ServerCluster", principalColumn: "ClusterId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "ClusterNodeCredential", columns: table => new { CredentialId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"), NodeId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), Kind = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), Value = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: false), Enabled = table.Column(type: "bit", nullable: false), RotatedAt = table.Column(type: "datetime2(3)", nullable: true), CreatedAt = table.Column(type: "datetime2(3)", nullable: false, defaultValueSql: "SYSUTCDATETIME()"), CreatedBy = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false) }, constraints: table => { table.PrimaryKey("PK_ClusterNodeCredential", x => x.CredentialId); table.ForeignKey( name: "FK_ClusterNodeCredential_ClusterNode_NodeId", column: x => x.NodeId, principalTable: "ClusterNode", principalColumn: "NodeId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "ClusterNodeGenerationState", columns: table => new { NodeId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), CurrentGenerationId = table.Column(type: "bigint", nullable: true), LastAppliedAt = table.Column(type: "datetime2(3)", nullable: true), LastAppliedStatus = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: true), LastAppliedError = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), LastSeenAt = table.Column(type: "datetime2(3)", nullable: true) }, constraints: table => { table.PrimaryKey("PK_ClusterNodeGenerationState", x => x.NodeId); table.ForeignKey( name: "FK_ClusterNodeGenerationState_ClusterNode_NodeId", column: x => x.NodeId, principalTable: "ClusterNode", principalColumn: "NodeId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_ClusterNodeGenerationState_ConfigGeneration_CurrentGenerationId", column: x => x.CurrentGenerationId, principalTable: "ConfigGeneration", principalColumn: "GenerationId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Device", columns: table => new { DeviceRowId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"), GenerationId = table.Column(type: "bigint", nullable: false), DeviceId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), DriverInstanceId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), Enabled = table.Column(type: "bit", nullable: false), DeviceConfig = table.Column(type: "nvarchar(max)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Device", x => x.DeviceRowId); table.CheckConstraint("CK_Device_DeviceConfig_IsJson", "ISJSON(DeviceConfig) = 1"); table.ForeignKey( name: "FK_Device_ConfigGeneration_GenerationId", column: x => x.GenerationId, principalTable: "ConfigGeneration", principalColumn: "GenerationId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "DriverInstance", columns: table => new { DriverInstanceRowId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"), GenerationId = table.Column(type: "bigint", nullable: false), DriverInstanceId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), ClusterId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), NamespaceId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), DriverType = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), Enabled = table.Column(type: "bit", nullable: false), DriverConfig = table.Column(type: "nvarchar(max)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_DriverInstance", x => x.DriverInstanceRowId); table.CheckConstraint("CK_DriverInstance_DriverConfig_IsJson", "ISJSON(DriverConfig) = 1"); table.ForeignKey( name: "FK_DriverInstance_ConfigGeneration_GenerationId", column: x => x.GenerationId, principalTable: "ConfigGeneration", principalColumn: "GenerationId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_DriverInstance_ServerCluster_ClusterId", column: x => x.ClusterId, principalTable: "ServerCluster", principalColumn: "ClusterId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Equipment", columns: table => new { EquipmentRowId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"), GenerationId = table.Column(type: "bigint", nullable: false), EquipmentId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), EquipmentUuid = table.Column(type: "uniqueidentifier", nullable: false), DriverInstanceId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), DeviceId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), UnsLineId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), Name = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), MachineCode = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), ZTag = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), SAPID = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), Manufacturer = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), Model = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), SerialNumber = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), HardwareRevision = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: true), SoftwareRevision = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: true), YearOfConstruction = table.Column(type: "smallint", nullable: true), AssetLocation = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), ManufacturerUri = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), DeviceManualUri = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), EquipmentClassRef = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), Enabled = table.Column(type: "bit", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Equipment", x => x.EquipmentRowId); table.ForeignKey( name: "FK_Equipment_ConfigGeneration_GenerationId", column: x => x.GenerationId, principalTable: "ConfigGeneration", principalColumn: "GenerationId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Namespace", columns: table => new { NamespaceRowId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"), GenerationId = table.Column(type: "bigint", nullable: false), NamespaceId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), ClusterId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), Kind = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), NamespaceUri = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), Enabled = table.Column(type: "bit", nullable: false), Notes = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true) }, constraints: table => { table.PrimaryKey("PK_Namespace", x => x.NamespaceRowId); table.ForeignKey( name: "FK_Namespace_ConfigGeneration_GenerationId", column: x => x.GenerationId, principalTable: "ConfigGeneration", principalColumn: "GenerationId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Namespace_ServerCluster_ClusterId", column: x => x.ClusterId, principalTable: "ServerCluster", principalColumn: "ClusterId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "NodeAcl", columns: table => new { NodeAclRowId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"), GenerationId = table.Column(type: "bigint", nullable: false), NodeAclId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), ClusterId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), LdapGroup = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), ScopeKind = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: false), ScopeId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), PermissionFlags = table.Column(type: "int", nullable: false), Notes = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true) }, constraints: table => { table.PrimaryKey("PK_NodeAcl", x => x.NodeAclRowId); table.ForeignKey( name: "FK_NodeAcl_ConfigGeneration_GenerationId", column: x => x.GenerationId, principalTable: "ConfigGeneration", principalColumn: "GenerationId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "PollGroup", columns: table => new { PollGroupRowId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"), GenerationId = table.Column(type: "bigint", nullable: false), PollGroupId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), DriverInstanceId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), IntervalMs = table.Column(type: "int", nullable: false) }, constraints: table => { table.PrimaryKey("PK_PollGroup", x => x.PollGroupRowId); table.CheckConstraint("CK_PollGroup_IntervalMs_Min", "IntervalMs >= 50"); table.ForeignKey( name: "FK_PollGroup_ConfigGeneration_GenerationId", column: x => x.GenerationId, principalTable: "ConfigGeneration", principalColumn: "GenerationId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Tag", columns: table => new { TagRowId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"), GenerationId = table.Column(type: "bigint", nullable: false), TagId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), DriverInstanceId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), DeviceId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), EquipmentId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), FolderPath = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), DataType = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), AccessLevel = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: false), WriteIdempotent = table.Column(type: "bit", nullable: false), PollGroupId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), TagConfig = table.Column(type: "nvarchar(max)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Tag", x => x.TagRowId); table.CheckConstraint("CK_Tag_TagConfig_IsJson", "ISJSON(TagConfig) = 1"); table.ForeignKey( name: "FK_Tag_ConfigGeneration_GenerationId", column: x => x.GenerationId, principalTable: "ConfigGeneration", principalColumn: "GenerationId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "UnsArea", columns: table => new { UnsAreaRowId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"), GenerationId = table.Column(type: "bigint", nullable: false), UnsAreaId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), ClusterId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), Name = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), Notes = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true) }, constraints: table => { table.PrimaryKey("PK_UnsArea", x => x.UnsAreaRowId); table.ForeignKey( name: "FK_UnsArea_ConfigGeneration_GenerationId", column: x => x.GenerationId, principalTable: "ConfigGeneration", principalColumn: "GenerationId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_UnsArea_ServerCluster_ClusterId", column: x => x.ClusterId, principalTable: "ServerCluster", principalColumn: "ClusterId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "UnsLine", columns: table => new { UnsLineRowId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"), GenerationId = table.Column(type: "bigint", nullable: false), UnsLineId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), UnsAreaId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), Name = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), Notes = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true) }, constraints: table => { table.PrimaryKey("PK_UnsLine", x => x.UnsLineRowId); table.ForeignKey( name: "FK_UnsLine_ConfigGeneration_GenerationId", column: x => x.GenerationId, principalTable: "ConfigGeneration", principalColumn: "GenerationId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateIndex( name: "UX_ClusterNode_ApplicationUri", table: "ClusterNode", column: "ApplicationUri", unique: true); migrationBuilder.CreateIndex( name: "UX_ClusterNode_Primary_Per_Cluster", table: "ClusterNode", column: "ClusterId", unique: true, filter: "[RedundancyRole] = 'Primary'"); migrationBuilder.CreateIndex( name: "IX_ClusterNodeCredential_NodeId", table: "ClusterNodeCredential", columns: new[] { "NodeId", "Enabled" }); migrationBuilder.CreateIndex( name: "UX_ClusterNodeCredential_Value", table: "ClusterNodeCredential", columns: new[] { "Kind", "Value" }, unique: true, filter: "[Enabled] = 1"); migrationBuilder.CreateIndex( name: "IX_ClusterNodeGenerationState_Generation", table: "ClusterNodeGenerationState", column: "CurrentGenerationId"); migrationBuilder.CreateIndex( name: "IX_ConfigAuditLog_Cluster_Time", table: "ConfigAuditLog", columns: new[] { "ClusterId", "Timestamp" }, descending: new[] { false, true }); migrationBuilder.CreateIndex( name: "IX_ConfigAuditLog_Generation", table: "ConfigAuditLog", column: "GenerationId", filter: "[GenerationId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "IX_ConfigGeneration_Cluster_Published", table: "ConfigGeneration", columns: new[] { "ClusterId", "Status", "GenerationId" }, descending: new[] { false, false, true }) .Annotation("SqlServer:Include", new[] { "PublishedAt" }); migrationBuilder.CreateIndex( name: "IX_ConfigGeneration_ParentGenerationId", table: "ConfigGeneration", column: "ParentGenerationId"); migrationBuilder.CreateIndex( name: "UX_ConfigGeneration_Draft_Per_Cluster", table: "ConfigGeneration", column: "ClusterId", unique: true, filter: "[Status] = 'Draft'"); migrationBuilder.CreateIndex( name: "IX_Device_Generation_Driver", table: "Device", columns: new[] { "GenerationId", "DriverInstanceId" }); migrationBuilder.CreateIndex( name: "UX_Device_Generation_LogicalId", table: "Device", columns: new[] { "GenerationId", "DeviceId" }, unique: true, filter: "[DeviceId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "IX_DriverInstance_ClusterId", table: "DriverInstance", column: "ClusterId"); migrationBuilder.CreateIndex( name: "IX_DriverInstance_Generation_Cluster", table: "DriverInstance", columns: new[] { "GenerationId", "ClusterId" }); migrationBuilder.CreateIndex( name: "IX_DriverInstance_Generation_Namespace", table: "DriverInstance", columns: new[] { "GenerationId", "NamespaceId" }); migrationBuilder.CreateIndex( name: "UX_DriverInstance_Generation_LogicalId", table: "DriverInstance", columns: new[] { "GenerationId", "DriverInstanceId" }, unique: true, filter: "[DriverInstanceId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "IX_Equipment_Generation_Driver", table: "Equipment", columns: new[] { "GenerationId", "DriverInstanceId" }); migrationBuilder.CreateIndex( name: "IX_Equipment_Generation_Line", table: "Equipment", columns: new[] { "GenerationId", "UnsLineId" }); migrationBuilder.CreateIndex( name: "IX_Equipment_Generation_MachineCode", table: "Equipment", columns: new[] { "GenerationId", "MachineCode" }); migrationBuilder.CreateIndex( name: "IX_Equipment_Generation_SAPID", table: "Equipment", columns: new[] { "GenerationId", "SAPID" }, filter: "[SAPID] IS NOT NULL"); migrationBuilder.CreateIndex( name: "IX_Equipment_Generation_ZTag", table: "Equipment", columns: new[] { "GenerationId", "ZTag" }, filter: "[ZTag] IS NOT NULL"); migrationBuilder.CreateIndex( name: "UX_Equipment_Generation_LinePath", table: "Equipment", columns: new[] { "GenerationId", "UnsLineId", "Name" }, unique: true); migrationBuilder.CreateIndex( name: "UX_Equipment_Generation_LogicalId", table: "Equipment", columns: new[] { "GenerationId", "EquipmentId" }, unique: true, filter: "[EquipmentId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "UX_Equipment_Generation_Uuid", table: "Equipment", columns: new[] { "GenerationId", "EquipmentUuid" }, unique: true); migrationBuilder.CreateIndex( name: "IX_ExternalIdReservation_Equipment", table: "ExternalIdReservation", column: "EquipmentUuid"); migrationBuilder.CreateIndex( name: "UX_ExternalIdReservation_KindValue_Active", table: "ExternalIdReservation", columns: new[] { "Kind", "Value" }, unique: true, filter: "[ReleasedAt] IS NULL"); migrationBuilder.CreateIndex( name: "IX_Namespace_ClusterId", table: "Namespace", column: "ClusterId"); migrationBuilder.CreateIndex( name: "IX_Namespace_Generation_Cluster", table: "Namespace", columns: new[] { "GenerationId", "ClusterId" }); migrationBuilder.CreateIndex( name: "UX_Namespace_Generation_Cluster_Kind", table: "Namespace", columns: new[] { "GenerationId", "ClusterId", "Kind" }, unique: true); migrationBuilder.CreateIndex( name: "UX_Namespace_Generation_LogicalId", table: "Namespace", columns: new[] { "GenerationId", "NamespaceId" }, unique: true, filter: "[NamespaceId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "UX_Namespace_Generation_LogicalId_Cluster", table: "Namespace", columns: new[] { "GenerationId", "NamespaceId", "ClusterId" }, unique: true, filter: "[NamespaceId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "UX_Namespace_Generation_NamespaceUri", table: "Namespace", columns: new[] { "GenerationId", "NamespaceUri" }, unique: true); migrationBuilder.CreateIndex( name: "IX_NodeAcl_Generation_Cluster", table: "NodeAcl", columns: new[] { "GenerationId", "ClusterId" }); migrationBuilder.CreateIndex( name: "IX_NodeAcl_Generation_Group", table: "NodeAcl", columns: new[] { "GenerationId", "LdapGroup" }); migrationBuilder.CreateIndex( name: "IX_NodeAcl_Generation_Scope", table: "NodeAcl", columns: new[] { "GenerationId", "ScopeKind", "ScopeId" }, filter: "[ScopeId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "UX_NodeAcl_Generation_GroupScope", table: "NodeAcl", columns: new[] { "GenerationId", "ClusterId", "LdapGroup", "ScopeKind", "ScopeId" }, unique: true, filter: "[ScopeId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "UX_NodeAcl_Generation_LogicalId", table: "NodeAcl", columns: new[] { "GenerationId", "NodeAclId" }, unique: true, filter: "[NodeAclId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "IX_PollGroup_Generation_Driver", table: "PollGroup", columns: new[] { "GenerationId", "DriverInstanceId" }); migrationBuilder.CreateIndex( name: "UX_PollGroup_Generation_LogicalId", table: "PollGroup", columns: new[] { "GenerationId", "PollGroupId" }, unique: true, filter: "[PollGroupId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "IX_ServerCluster_Site", table: "ServerCluster", column: "Site"); migrationBuilder.CreateIndex( name: "UX_ServerCluster_Name", table: "ServerCluster", column: "Name", unique: true); migrationBuilder.CreateIndex( name: "IX_Tag_Generation_Driver_Device", table: "Tag", columns: new[] { "GenerationId", "DriverInstanceId", "DeviceId" }); migrationBuilder.CreateIndex( name: "IX_Tag_Generation_Equipment", table: "Tag", columns: new[] { "GenerationId", "EquipmentId" }, filter: "[EquipmentId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "UX_Tag_Generation_EquipmentPath", table: "Tag", columns: new[] { "GenerationId", "EquipmentId", "Name" }, unique: true, filter: "[EquipmentId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "UX_Tag_Generation_FolderPath", table: "Tag", columns: new[] { "GenerationId", "DriverInstanceId", "FolderPath", "Name" }, unique: true, filter: "[EquipmentId] IS NULL"); migrationBuilder.CreateIndex( name: "UX_Tag_Generation_LogicalId", table: "Tag", columns: new[] { "GenerationId", "TagId" }, unique: true, filter: "[TagId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "IX_UnsArea_ClusterId", table: "UnsArea", column: "ClusterId"); migrationBuilder.CreateIndex( name: "IX_UnsArea_Generation_Cluster", table: "UnsArea", columns: new[] { "GenerationId", "ClusterId" }); migrationBuilder.CreateIndex( name: "UX_UnsArea_Generation_ClusterName", table: "UnsArea", columns: new[] { "GenerationId", "ClusterId", "Name" }, unique: true); migrationBuilder.CreateIndex( name: "UX_UnsArea_Generation_LogicalId", table: "UnsArea", columns: new[] { "GenerationId", "UnsAreaId" }, unique: true, filter: "[UnsAreaId] IS NOT NULL"); migrationBuilder.CreateIndex( name: "IX_UnsLine_Generation_Area", table: "UnsLine", columns: new[] { "GenerationId", "UnsAreaId" }); migrationBuilder.CreateIndex( name: "UX_UnsLine_Generation_AreaName", table: "UnsLine", columns: new[] { "GenerationId", "UnsAreaId", "Name" }, unique: true); migrationBuilder.CreateIndex( name: "UX_UnsLine_Generation_LogicalId", table: "UnsLine", columns: new[] { "GenerationId", "UnsLineId" }, unique: true, filter: "[UnsLineId] IS NOT NULL"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "ClusterNodeCredential"); migrationBuilder.DropTable( name: "ClusterNodeGenerationState"); migrationBuilder.DropTable( name: "ConfigAuditLog"); migrationBuilder.DropTable( name: "Device"); migrationBuilder.DropTable( name: "DriverInstance"); migrationBuilder.DropTable( name: "Equipment"); migrationBuilder.DropTable( name: "ExternalIdReservation"); migrationBuilder.DropTable( name: "Namespace"); migrationBuilder.DropTable( name: "NodeAcl"); migrationBuilder.DropTable( name: "PollGroup"); migrationBuilder.DropTable( name: "Tag"); migrationBuilder.DropTable( name: "UnsArea"); migrationBuilder.DropTable( name: "UnsLine"); migrationBuilder.DropTable( name: "ClusterNode"); migrationBuilder.DropTable( name: "ConfigGeneration"); migrationBuilder.DropTable( name: "ServerCluster"); } } }