using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace TafsirQuran.Infrastructure.Persistence.Migrations
{
///
public partial class SurahExplicitIds : Migration
{
///
protected override void Up(MigrationBuilder migrationBuilder)
{
// SQL Server cannot ALTER IDENTITY off a column; recreate Surahs without identity.
migrationBuilder.Sql("""
IF OBJECT_ID(N'[FK_Ayahs_Surahs_SurahId]', N'F') IS NOT NULL
ALTER TABLE [Ayahs] DROP CONSTRAINT [FK_Ayahs_Surahs_SurahId];
IF OBJECT_ID(N'[FK_Episodes_Surahs_SurahId]', N'F') IS NOT NULL
ALTER TABLE [Episodes] DROP CONSTRAINT [FK_Episodes_Surahs_SurahId];
IF OBJECT_ID(N'[Surahs]', N'U') IS NOT NULL
BEGIN
SELECT * INTO [#SurahsBackup] FROM [Surahs];
DROP TABLE [Surahs];
END
CREATE TABLE [Surahs] (
[Id] int NOT NULL,
[Number] int NOT NULL,
[NameAr] nvarchar(80) NOT NULL,
[NameFa] nvarchar(80) NOT NULL,
CONSTRAINT [PK_Surahs] PRIMARY KEY ([Id])
);
CREATE UNIQUE INDEX [IX_Surahs_Number] ON [Surahs] ([Number]);
IF OBJECT_ID(N'tempdb..#SurahsBackup') IS NOT NULL
BEGIN
INSERT INTO [Surahs] ([Id], [Number], [NameAr], [NameFa])
SELECT [Id], [Number], [NameAr], [NameFa] FROM [#SurahsBackup];
DROP TABLE [#SurahsBackup];
END
ALTER TABLE [Ayahs] WITH CHECK ADD CONSTRAINT [FK_Ayahs_Surahs_SurahId]
FOREIGN KEY ([SurahId]) REFERENCES [Surahs] ([Id]) ON DELETE CASCADE;
ALTER TABLE [Episodes] WITH CHECK ADD CONSTRAINT [FK_Episodes_Surahs_SurahId]
FOREIGN KEY ([SurahId]) REFERENCES [Surahs] ([Id]) ON DELETE CASCADE;
""");
}
///
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql("""
IF OBJECT_ID(N'[FK_Ayahs_Surahs_SurahId]', N'F') IS NOT NULL
ALTER TABLE [Ayahs] DROP CONSTRAINT [FK_Ayahs_Surahs_SurahId];
IF OBJECT_ID(N'[FK_Episodes_Surahs_SurahId]', N'F') IS NOT NULL
ALTER TABLE [Episodes] DROP CONSTRAINT [FK_Episodes_Surahs_SurahId];
IF OBJECT_ID(N'[Surahs]', N'U') IS NOT NULL
BEGIN
SELECT * INTO [#SurahsBackup] FROM [Surahs];
DROP TABLE [Surahs];
END
CREATE TABLE [Surahs] (
[Id] int NOT NULL IDENTITY(1,1),
[Number] int NOT NULL,
[NameAr] nvarchar(80) NOT NULL,
[NameFa] nvarchar(80) NOT NULL,
CONSTRAINT [PK_Surahs] PRIMARY KEY ([Id])
);
CREATE UNIQUE INDEX [IX_Surahs_Number] ON [Surahs] ([Number]);
IF OBJECT_ID(N'tempdb..#SurahsBackup') IS NOT NULL
BEGIN
SET IDENTITY_INSERT [Surahs] ON;
INSERT INTO [Surahs] ([Id], [Number], [NameAr], [NameFa])
SELECT [Id], [Number], [NameAr], [NameFa] FROM [#SurahsBackup];
SET IDENTITY_INSERT [Surahs] OFF;
DROP TABLE [#SurahsBackup];
END
ALTER TABLE [Ayahs] WITH CHECK ADD CONSTRAINT [FK_Ayahs_Surahs_SurahId]
FOREIGN KEY ([SurahId]) REFERENCES [Surahs] ([Id]) ON DELETE CASCADE;
ALTER TABLE [Episodes] WITH CHECK ADD CONSTRAINT [FK_Episodes_Surahs_SurahId]
FOREIGN KEY ([SurahId]) REFERENCES [Surahs] ([Id]) ON DELETE CASCADE;
""");
}
}
}