using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ZB.MOM.WW.OtOpcUa.Configuration.Migrations
{
///
public partial class AddPhase7ScriptingTables : Migration
{
///
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Script",
columns: table => new
{
ScriptRowId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"),
GenerationId = table.Column(type: "bigint", nullable: false),
ScriptId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false),
SourceCode = table.Column(type: "nvarchar(max)", nullable: false),
SourceHash = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false),
Language = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Script", x => x.ScriptRowId);
table.ForeignKey(
name: "FK_Script_ConfigGeneration_GenerationId",
column: x => x.GenerationId,
principalTable: "ConfigGeneration",
principalColumn: "GenerationId",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "ScriptedAlarm",
columns: table => new
{
ScriptedAlarmRowId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"),
GenerationId = table.Column(type: "bigint", nullable: false),
ScriptedAlarmId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
EquipmentId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false),
Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false),
AlarmType = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false),
Severity = table.Column(type: "int", nullable: false),
MessageTemplate = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: false),
PredicateScriptId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false),
HistorizeToAveva = table.Column(type: "bit", nullable: false),
Retain = table.Column(type: "bit", nullable: false),
Enabled = table.Column(type: "bit", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ScriptedAlarm", x => x.ScriptedAlarmRowId);
table.CheckConstraint("CK_ScriptedAlarm_AlarmType", "AlarmType IN ('AlarmCondition','LimitAlarm','OffNormalAlarm','DiscreteAlarm')");
table.CheckConstraint("CK_ScriptedAlarm_Severity_Range", "Severity BETWEEN 1 AND 1000");
table.ForeignKey(
name: "FK_ScriptedAlarm_ConfigGeneration_GenerationId",
column: x => x.GenerationId,
principalTable: "ConfigGeneration",
principalColumn: "GenerationId",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "ScriptedAlarmState",
columns: table => new
{
ScriptedAlarmId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false),
EnabledState = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: false),
AckedState = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: false),
ConfirmedState = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: false),
ShelvingState = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: false),
ShelvingExpiresUtc = table.Column(type: "datetime2(3)", nullable: true),
LastAckUser = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true),
LastAckComment = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true),
LastAckUtc = table.Column(type: "datetime2(3)", nullable: true),
LastConfirmUser = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true),
LastConfirmComment = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true),
LastConfirmUtc = table.Column(type: "datetime2(3)", nullable: true),
CommentsJson = table.Column(type: "nvarchar(max)", nullable: false),
UpdatedAtUtc = table.Column(type: "datetime2(3)", nullable: false, defaultValueSql: "SYSUTCDATETIME()")
},
constraints: table =>
{
table.PrimaryKey("PK_ScriptedAlarmState", x => x.ScriptedAlarmId);
table.CheckConstraint("CK_ScriptedAlarmState_CommentsJson_IsJson", "ISJSON(CommentsJson) = 1");
});
migrationBuilder.CreateTable(
name: "VirtualTag",
columns: table => new
{
VirtualTagRowId = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWSEQUENTIALID()"),
GenerationId = table.Column(type: "bigint", nullable: false),
VirtualTagId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
EquipmentId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false),
Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false),
DataType = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false),
ScriptId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false),
ChangeTriggered = table.Column(type: "bit", nullable: false),
TimerIntervalMs = table.Column(type: "int", nullable: true),
Historize = table.Column(type: "bit", nullable: false),
Enabled = table.Column(type: "bit", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_VirtualTag", x => x.VirtualTagRowId);
table.CheckConstraint("CK_VirtualTag_TimerInterval_Min", "TimerIntervalMs IS NULL OR TimerIntervalMs >= 50");
table.CheckConstraint("CK_VirtualTag_Trigger_AtLeastOne", "ChangeTriggered = 1 OR TimerIntervalMs IS NOT NULL");
table.ForeignKey(
name: "FK_VirtualTag_ConfigGeneration_GenerationId",
column: x => x.GenerationId,
principalTable: "ConfigGeneration",
principalColumn: "GenerationId",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateIndex(
name: "IX_Script_Generation_SourceHash",
table: "Script",
columns: new[] { "GenerationId", "SourceHash" });
migrationBuilder.CreateIndex(
name: "UX_Script_Generation_LogicalId",
table: "Script",
columns: new[] { "GenerationId", "ScriptId" },
unique: true,
filter: "[ScriptId] IS NOT NULL");
migrationBuilder.CreateIndex(
name: "IX_ScriptedAlarm_Generation_Script",
table: "ScriptedAlarm",
columns: new[] { "GenerationId", "PredicateScriptId" });
migrationBuilder.CreateIndex(
name: "UX_ScriptedAlarm_Generation_EquipmentPath",
table: "ScriptedAlarm",
columns: new[] { "GenerationId", "EquipmentId", "Name" },
unique: true);
migrationBuilder.CreateIndex(
name: "UX_ScriptedAlarm_Generation_LogicalId",
table: "ScriptedAlarm",
columns: new[] { "GenerationId", "ScriptedAlarmId" },
unique: true,
filter: "[ScriptedAlarmId] IS NOT NULL");
migrationBuilder.CreateIndex(
name: "IX_VirtualTag_Generation_Script",
table: "VirtualTag",
columns: new[] { "GenerationId", "ScriptId" });
migrationBuilder.CreateIndex(
name: "UX_VirtualTag_Generation_EquipmentPath",
table: "VirtualTag",
columns: new[] { "GenerationId", "EquipmentId", "Name" },
unique: true);
migrationBuilder.CreateIndex(
name: "UX_VirtualTag_Generation_LogicalId",
table: "VirtualTag",
columns: new[] { "GenerationId", "VirtualTagId" },
unique: true,
filter: "[VirtualTagId] IS NOT NULL");
}
///
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Script");
migrationBuilder.DropTable(
name: "ScriptedAlarm");
migrationBuilder.DropTable(
name: "ScriptedAlarmState");
migrationBuilder.DropTable(
name: "VirtualTag");
}
}
}