IW4M-Admin/Data/Migrations/Sqlite/20210124164906_UpdateEFMetaToSupportNonClientMetaAndLinkedMeta.cs
RaidMax c5375b661b huge commit for advanced stats feature.
broke data out into its own library.
may be breaking changes with existing plugins
2021-03-22 11:09:25 -05:00

129 lines
4.1 KiB
C#

using Microsoft.EntityFrameworkCore.Migrations;
namespace Data.Migrations.Sqlite
{
public partial class UpdateEFMetaToSupportNonClientMetaAndLinkedMeta : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(@"PRAGMA foreign_keys = 0;
CREATE TABLE sqlitestudio_temp_table AS SELECT *
FROM EFMeta;
DROP TABLE EFMeta;
CREATE TABLE EFMeta (
MetaId INTEGER NOT NULL
CONSTRAINT PK_EFMeta PRIMARY KEY AUTOINCREMENT,
Active INTEGER NOT NULL,
ClientId INTEGER,
Created TEXT NOT NULL,
Extra TEXT,
[Key] TEXT NOT NULL,
Updated TEXT NOT NULL,
Value TEXT NOT NULL,
LinkedMetaId INTEGER CONSTRAINT IX_EFMeta_LinkedMetaId REFERENCES EFMeta (MetaId) ON DELETE SET NULL,
CONSTRAINT FK_EFMeta_EFClients_ClientId FOREIGN KEY (
ClientId
)
REFERENCES EFClients (ClientId) ON DELETE CASCADE
);
INSERT INTO EFMeta (
MetaId,
Active,
ClientId,
Created,
Extra,
[Key],
Updated,
Value
)
SELECT MetaId,
Active,
ClientId,
Created,
Extra,
""Key"",
Updated,
Value
FROM sqlitestudio_temp_table;
DROP TABLE sqlitestudio_temp_table;
CREATE INDEX IX_EFMeta_ClientId ON EFMeta(
""ClientId""
);
CREATE INDEX IX_EFMeta_Key ON EFMeta (
""Key""
);
CREATE INDEX IX_EFMeta_LinkedMetaId ON EFMeta (
LinkedMetaId
);
PRAGMA foreign_keys = 1;");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(@"PRAGMA foreign_keys = 0;
CREATE TABLE sqlitestudio_temp_table AS SELECT *
FROM EFMeta;
DROP TABLE EFMeta;
CREATE TABLE EFMeta (
MetaId INTEGER NOT NULL
CONSTRAINT PK_EFMeta PRIMARY KEY AUTOINCREMENT,
Active INTEGER NOT NULL,
ClientId INTEGER NOT NULL,
Created TEXT NOT NULL,
Extra TEXT,
[Key] TEXT NOT NULL,
Updated TEXT NOT NULL,
Value TEXT NOT NULL,
CONSTRAINT FK_EFMeta_EFClients_ClientId FOREIGN KEY (
ClientId
)
REFERENCES EFClients (ClientId) ON DELETE CASCADE
);
INSERT INTO EFMeta (
MetaId,
Active,
ClientId,
Created,
Extra,
[Key],
Updated,
Value
)
SELECT MetaId,
Active,
ClientId,
Created,
Extra,
""Key"",
Updated,
Value
FROM sqlitestudio_temp_table;
DROP TABLE sqlitestudio_temp_table;
CREATE INDEX IX_EFMeta_ClientId ON EFMeta(
""ClientId""
);
CREATE INDEX IX_EFMeta_Key ON EFMeta(
""Key""
);
PRAGMA foreign_keys = 1;");
}
}
}