Ctrl K
ComunidadGuías…

sql-scripts/01_schema.sql

Rama develop · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
IF OBJECT_ID(N'[__EFMigrationsHistory]') IS NULL
BEGIN
    CREATE TABLE [__EFMigrationsHistory] (
        [MigrationId] nvarchar(150) NOT NULL,
        [ProductVersion] nvarchar(32) NOT NULL,
        CONSTRAINT [PK___EFMigrationsHistory] PRIMARY KEY ([MigrationId])
    );
END;
GO

BEGIN TRANSACTION;
IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [ActivityLog] (
        [Id] int NOT NULL IDENTITY,
        [SystemName] nvarchar(100) NOT NULL,
        [EntityId] int NULL,
        [EntityName] nvarchar(500) NOT NULL,
        [UserId] int NOT NULL,
        [Comment] nvarchar(max) NOT NULL,
        [CreatedOnUtc] datetime2 NOT NULL,
        [IpAddress] nvarchar(max) NOT NULL,
        CONSTRAINT [PK_ActivityLog] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Address] (
        [Id] int NOT NULL IDENTITY,
        [Address1] nvarchar(750) NOT NULL,
        [Address2] nvarchar(750) NULL,
        [City] nvarchar(100) NULL,
        [ZipPostalCode] nvarchar(20) NOT NULL,
        CONSTRAINT [PK_Address] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Announcement] (
        [Id] int NOT NULL IDENTITY,
        [Title] nvarchar(200) NOT NULL,
        [Body] nvarchar(max) NOT NULL,
        [Type] int NOT NULL,
        [Severity] int NOT NULL,
        [Audience] int NOT NULL,
        [ValidFrom] date NOT NULL,
        [ValidTo] date NOT NULL,
        [RequiresAcknowledgement] bit NOT NULL,
        [DisplayOrder] int NOT NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_Announcement] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [AuditLog] (
        [Id] int NOT NULL IDENTITY,
        [EntityName] nvarchar(500) NOT NULL,
        [EntityId] int NULL,
        [Action] nvarchar(20) NOT NULL,
        [UserId] int NULL,
        [OldValues] nvarchar(max) NULL,
        [NewValues] nvarchar(max) NULL,
        [CreatedOnUtc] datetime2 NOT NULL,
        [IpAddress] nvarchar(100) NULL,
        CONSTRAINT [PK_AuditLog] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Client] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [Description] nvarchar(250) NULL,
        [ContactPerson] nvarchar(100) NULL,
        [PhoneNumber] nvarchar(100) NULL,
        [Email] nvarchar(250) NULL,
        [Website] nvarchar(750) NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_Client] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Document] (
        [Id] int NOT NULL IDENTITY,
        [FileName] nvarchar(255) NOT NULL,
        [FileData] varbinary(max) NOT NULL,
        [ContentType] nvarchar(50) NOT NULL,
        [FileSize] bigint NOT NULL,
        [Extension] nvarchar(10) NOT NULL,
        CONSTRAINT [PK_Document] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [EmailAccount] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [Description] nvarchar(250) NULL,
        [UserName] nvarchar(max) NOT NULL,
        [Host] nvarchar(max) NOT NULL,
        [Port] int NOT NULL,
        [Password] nvarchar(max) NOT NULL,
        [EnableSsl] bit NOT NULL,
        [FromEmail] nvarchar(max) NOT NULL,
        [FromName] nvarchar(max) NOT NULL,
        [Active] bit NOT NULL,
        CONSTRAINT [PK_EmailAccount] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [GenericAttribute] (
        [Id] int NOT NULL IDENTITY,
        [EntityId] int NOT NULL,
        [KeyGroup] nvarchar(200) NOT NULL,
        [Key] nvarchar(200) NOT NULL,
        [Value] nvarchar(max) NOT NULL,
        [CreatedOrUpdatedDate] datetime2 NULL,
        CONSTRAINT [PK_GenericAttribute] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [GitConnection] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [ProviderType] int NOT NULL,
        [BaseUrl] nvarchar(500) NOT NULL,
        [ApiUrl] nvarchar(500) NULL,
        [AuthMode] int NOT NULL,
        [ServiceToken] nvarchar(max) NULL,
        [AppId] nvarchar(50) NULL,
        [AppPrivateKey] nvarchar(max) NULL,
        [OAuthClientId] nvarchar(200) NULL,
        [OAuthClientSecret] nvarchar(max) NULL,
        [ServiceAccountUserName] nvarchar(255) NULL,
        [ServiceAccountExternalId] nvarchar(64) NULL,
        [AllowInsecureHttp] bit NOT NULL,
        [IsDefault] bit NOT NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        [CreatedOn] datetime2 NOT NULL,
        [ModifiedOn] datetime2 NULL,
        CONSTRAINT [PK_GitConnection] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Language] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(750) NOT NULL,
        [LanguageCulture] nvarchar(10) NOT NULL,
        [DisplayName] nvarchar(750) NOT NULL,
        [Rtl] bit NOT NULL,
        [DisplayOrder] int NOT NULL,
        [Active] bit NOT NULL,
        CONSTRAINT [PK_Language] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Log] (
        [Id] int NOT NULL IDENTITY,
        [LogLevelId] int NOT NULL,
        [ShortMessage] nvarchar(max) NOT NULL,
        [FullMessage] nvarchar(max) NOT NULL,
        [IpAddress] nvarchar(max) NULL,
        [UserId] int NULL,
        [PageUrl] nvarchar(max) NULL,
        [ReferrerUrl] nvarchar(max) NULL,
        [CreatedOnUtc] datetime2 NOT NULL,
        [LogLevel] int NOT NULL,
        CONSTRAINT [PK_Log] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Menu] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(50) NOT NULL,
        [SystemName] nvarchar(100) NOT NULL,
        [Code] int NOT NULL,
        [ActionName] nvarchar(100) NULL,
        [ControllerName] nvarchar(100) NULL,
        [ParentCode] int NULL,
        [Icon] nvarchar(100) NULL,
        [DisplayOrder] int NOT NULL,
        [Permission] nvarchar(100) NOT NULL,
        [Active] bit NOT NULL,
        CONSTRAINT [PK_Menu] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [NotificationChannel] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [ChannelType] int NOT NULL,
        [EndpointUrl] nvarchar(max) NOT NULL,
        [SigningSecret] nvarchar(max) NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        [CreatedOn] datetime2 NOT NULL,
        [ModifiedOn] datetime2 NULL,
        [LastSentOn] datetime2 NULL,
        [LastError] nvarchar(1000) NULL,
        CONSTRAINT [PK_NotificationChannel] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Setting] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(250) NOT NULL,
        [Value] nvarchar(max) NOT NULL,
        CONSTRAINT [PK_Setting] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Severity] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [Description] nvarchar(250) NULL,
        [GroupId] int NOT NULL,
        [TextColor] nvarchar(20) NULL,
        [BackgroundColor] nvarchar(20) NULL,
        [IconClass] nvarchar(50) NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_Severity] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Tag] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_Tag] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [TaskType] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [Description] nvarchar(250) NULL,
        [GroupId] int NOT NULL,
        [TextColor] nvarchar(20) NULL,
        [BackgroundColor] nvarchar(20) NULL,
        [IconClass] nvarchar(50) NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_TaskType] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [UserRole] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(50) NOT NULL,
        [SystemName] nvarchar(50) NOT NULL,
        [Description] nvarchar(250) NULL,
        [SystemDefined] bit NOT NULL,
        [Active] bit NOT NULL,
        CONSTRAINT [PK_UserRole] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [UserRolePermission] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [SystemName] nvarchar(255) NOT NULL,
        [RoleGroup] nvarchar(255) NOT NULL,
        [SystemDefined] bit NOT NULL,
        CONSTRAINT [PK_UserRolePermission] PRIMARY KEY ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [EmailTemplate] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [EmailSubject] nvarchar(max) NOT NULL,
        [EmailBody] nvarchar(max) NOT NULL,
        [EmailAccountId] int NOT NULL,
        [Active] bit NOT NULL,
        CONSTRAINT [PK_EmailTemplate] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_EmailTemplate_EmailAccount_EmailAccountId] FOREIGN KEY ([EmailAccountId]) REFERENCES [EmailAccount] ([Id]) ON DELETE CASCADE
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [LocaleResource] (
        [Id] int NOT NULL IDENTITY,
        [LanguageId] int NOT NULL,
        [ResourceKey] nvarchar(100) NOT NULL,
        [ResourceValue] nvarchar(max) NOT NULL,
        CONSTRAINT [PK_LocaleResource] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_LocaleResource_Language_LanguageId] FOREIGN KEY ([LanguageId]) REFERENCES [Language] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [User] (
        [Id] int NOT NULL IDENTITY,
        [Code] uniqueidentifier NOT NULL,
        [FirstName] nvarchar(50) NOT NULL,
        [LastName] nvarchar(50) NOT NULL,
        [FriendlyName] nvarchar(100) NULL,
        [MobileNumber] nvarchar(10) NOT NULL,
        [Email] nvarchar(150) NOT NULL,
        [GenderId] int NOT NULL,
        [MaritalStatus] int NOT NULL,
        [DateOfBirth] date NOT NULL,
        [DateOfJoin] date NOT NULL,
        [LanguageId] int NOT NULL,
        [AddressId] int NOT NULL,
        [GitUserName] nvarchar(100) NULL,
        [PhotoDocumentId] int NULL,
        [SystemAccount] bit NOT NULL,
        [FailedLoginAttempts] int NOT NULL,
        [LastIPAddress] nvarchar(100) NULL,
        [LastLoginDate] datetime2 NULL,
        [LastActivityDate] datetime2 NOT NULL,
        [Locked] bit NOT NULL,
        [Status] int NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_User] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_User_Address_AddressId] FOREIGN KEY ([AddressId]) REFERENCES [Address] ([Id]),
        CONSTRAINT [FK_User_Language_LanguageId] FOREIGN KEY ([LanguageId]) REFERENCES [Language] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [AnnouncementRole] (
        [Id] int NOT NULL IDENTITY,
        [AnnouncementId] int NOT NULL,
        [UserRoleId] int NOT NULL,
        CONSTRAINT [PK_AnnouncementRole] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_AnnouncementRole_Announcement_AnnouncementId] FOREIGN KEY ([AnnouncementId]) REFERENCES [Announcement] ([Id]),
        CONSTRAINT [FK_AnnouncementRole_UserRole_UserRoleId] FOREIGN KEY ([UserRoleId]) REFERENCES [UserRole] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [UserRolePermissionMap] (
        [PermissionId] int NOT NULL,
        [UserRoleId] int NOT NULL,
        CONSTRAINT [PK_UserRolePermissionMap] PRIMARY KEY ([PermissionId], [UserRoleId]),
        CONSTRAINT [FK_UserRolePermissionMap_UserRolePermission_PermissionId] FOREIGN KEY ([PermissionId]) REFERENCES [UserRolePermission] ([Id]),
        CONSTRAINT [FK_UserRolePermissionMap_UserRole_UserRoleId] FOREIGN KEY ([UserRoleId]) REFERENCES [UserRole] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [AnnouncementAcknowledgement] (
        [Id] int NOT NULL IDENTITY,
        [AnnouncementId] int NOT NULL,
        [UserId] int NOT NULL,
        [AcknowledgedOnUtc] datetime2 NOT NULL,
        CONSTRAINT [PK_AnnouncementAcknowledgement] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_AnnouncementAcknowledgement_Announcement_AnnouncementId] FOREIGN KEY ([AnnouncementId]) REFERENCES [Announcement] ([Id]),
        CONSTRAINT [FK_AnnouncementAcknowledgement_User_UserId] FOREIGN KEY ([UserId]) REFERENCES [User] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Project] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [Description] nvarchar(250) NULL,
        [StartDate] date NULL,
        [EndDate] date NULL,
        [ClientId] int NOT NULL,
        [ProjectManagerId] int NULL,
        [TeamLeadId] int NULL,
        [CodeReviewerId] int NULL,
        [GitProjectReference] nvarchar(50) NULL,
        [ReleaseVersionFormat] nvarchar(50) NULL,
        [ReleaseFullIncrement] int NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_Project] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_Project_Client_ClientId] FOREIGN KEY ([ClientId]) REFERENCES [Client] ([Id]),
        CONSTRAINT [FK_Project_User_CodeReviewerId] FOREIGN KEY ([CodeReviewerId]) REFERENCES [User] ([Id]),
        CONSTRAINT [FK_Project_User_ProjectManagerId] FOREIGN KEY ([ProjectManagerId]) REFERENCES [User] ([Id]),
        CONSTRAINT [FK_Project_User_TeamLeadId] FOREIGN KEY ([TeamLeadId]) REFERENCES [User] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [UserGitAccount] (
        [Id] int NOT NULL IDENTITY,
        [UserId] int NOT NULL,
        [GitConnectionId] int NOT NULL,
        [ExternalUserId] nvarchar(64) NOT NULL,
        [UserName] nvarchar(255) NOT NULL,
        [DisplayName] nvarchar(255) NULL,
        [TokenType] int NOT NULL,
        [AccessToken] nvarchar(max) NOT NULL,
        [RefreshToken] nvarchar(max) NULL,
        [Scopes] nvarchar(500) NULL,
        [ExpiresOn] datetime2 NULL,
        [RefreshExpiresOn] datetime2 NULL,
        [ConnectedOn] datetime2 NOT NULL,
        [LastUsedOn] datetime2 NULL,
        CONSTRAINT [PK_UserGitAccount] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_UserGitAccount_GitConnection_GitConnectionId] FOREIGN KEY ([GitConnectionId]) REFERENCES [GitConnection] ([Id]),
        CONSTRAINT [FK_UserGitAccount_User_UserId] FOREIGN KEY ([UserId]) REFERENCES [User] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [UserNotification] (
        [Id] int NOT NULL IDENTITY,
        [UserId] int NOT NULL,
        [Type] int NOT NULL,
        [Title] nvarchar(300) NOT NULL,
        [Message] nvarchar(1000) NULL,
        [Url] nvarchar(500) NULL,
        [DedupeKey] nvarchar(200) NULL,
        [IsRead] bit NOT NULL,
        [CreatedOnUtc] datetime2 NOT NULL,
        [ReadOnUtc] datetime2 NULL,
        CONSTRAINT [PK_UserNotification] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_UserNotification_User_UserId] FOREIGN KEY ([UserId]) REFERENCES [User] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [UserPassword] (
        [Id] int NOT NULL IDENTITY,
        [UserId] int NOT NULL,
        [Password] nvarchar(max) NOT NULL,
        [PasswordSalt] nvarchar(max) NOT NULL,
        [CreatedOn] datetime2 NOT NULL,
        CONSTRAINT [PK_UserPassword] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_UserPassword_User_UserId] FOREIGN KEY ([UserId]) REFERENCES [User] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [UserRoleMap] (
        [UserId] int NOT NULL,
        [UserRoleId] int NOT NULL,
        CONSTRAINT [PK_UserRoleMap] PRIMARY KEY ([UserId], [UserRoleId]),
        CONSTRAINT [FK_UserRoleMap_UserRole_UserRoleId] FOREIGN KEY ([UserRoleId]) REFERENCES [UserRole] ([Id]),
        CONSTRAINT [FK_UserRoleMap_User_UserId] FOREIGN KEY ([UserId]) REFERENCES [User] ([Id]) ON DELETE CASCADE
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [CustomField] (
        [Id] int NOT NULL IDENTITY,
        [ProjectId] int NOT NULL,
        [Label] nvarchar(max) NOT NULL,
        [ResourceKey] nvarchar(100) NOT NULL,
        [FieldType] int NOT NULL,
        [Options] nvarchar(max) NULL,
        [Mandatory] bit NOT NULL,
        [ColumnClass] int NOT NULL,
        [Placement] int NOT NULL,
        CONSTRAINT [PK_CustomField] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_CustomField_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Module] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [Description] nvarchar(max) NULL,
        [ProjectId] int NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_Module] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_Module_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [ProjectNotificationChannel] (
        [Id] int NOT NULL IDENTITY,
        [ProjectId] int NOT NULL,
        [NotificationChannelId] int NOT NULL,
        [Events] int NOT NULL,
        [Active] bit NOT NULL,
        CONSTRAINT [PK_ProjectNotificationChannel] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_ProjectNotificationChannel_NotificationChannel_NotificationChannelId] FOREIGN KEY ([NotificationChannelId]) REFERENCES [NotificationChannel] ([Id]),
        CONSTRAINT [FK_ProjectNotificationChannel_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Release] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(50) NOT NULL,
        [ReleaseType] int NOT NULL,
        [Description] nvarchar(500) NULL,
        [ProjectId] int NULL,
        [ReleaseDate] date NOT NULL,
        [Status] int NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_Release] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_Release_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Reporter] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [Description] nvarchar(250) NULL,
        [ProjectId] int NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_Reporter] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_Reporter_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Status] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [Description] nvarchar(250) NULL,
        [GroupId] int NOT NULL,
        [ProjectId] int NULL,
        [TextColor] nvarchar(20) NULL,
        [BackgroundColor] nvarchar(20) NULL,
        [IconClass] nvarchar(50) NULL,
        [RequiredRootCauseForBug] bit NOT NULL,
        [RequiredRootCauseForCr] bit NOT NULL,
        [RequiredResolutionForBug] bit NOT NULL,
        [RequiredResolutionForCr] bit NOT NULL,
        [RequiredMrNumberForBug] bit NOT NULL,
        [RequiredMrNumberForCr] bit NOT NULL,
        [SystemDefined] bit NOT NULL,
        [ExternalUse] bit NOT NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_Status] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_Status_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [UserProjectMap] (
        [Id] int NOT NULL IDENTITY,
        [UserId] int NOT NULL,
        [ProjectId] int NOT NULL,
        [CanReportToDo] bit NOT NULL,
        [CanReportCR] bit NOT NULL,
        [CanReportBug] bit NOT NULL,
        [CanEdit] bit NOT NULL,
        [CanClose] bit NOT NULL,
        [CanReOpen] bit NOT NULL,
        [CanComment] bit NOT NULL,
        [CanViewOthersTask] bit NOT NULL,
        [CanEditOthersTask] bit NOT NULL,
        [CanAddWiki] bit NOT NULL,
        [CanDeleteTask] bit NOT NULL,
        [CanChangeProject] bit NOT NULL,
        [CanReviewMergeRequests] bit NOT NULL,
        [CanMergeMergeRequests] bit NOT NULL,
        CONSTRAINT [PK_UserProjectMap] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_UserProjectMap_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id]),
        CONSTRAINT [FK_UserProjectMap_User_UserId] FOREIGN KEY ([UserId]) REFERENCES [User] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [WikiCategory] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [Description] nvarchar(250) NULL,
        [ParentCategoryId] int NULL,
        [ProjectId] int NOT NULL,
        [Deleted] bit NOT NULL,
        [Active] bit NOT NULL,
        CONSTRAINT [PK_WikiCategory] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_WikiCategory_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id]),
        CONSTRAINT [FK_WikiCategory_WikiCategory_ParentCategoryId] FOREIGN KEY ([ParentCategoryId]) REFERENCES [WikiCategory] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [SubModule] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [Description] nvarchar(250) NULL,
        [ModuleId] int NOT NULL,
        [OwnerId] int NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_SubModule] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_SubModule_Module_ModuleId] FOREIGN KEY ([ModuleId]) REFERENCES [Module] ([Id]),
        CONSTRAINT [FK_SubModule_User_OwnerId] FOREIGN KEY ([OwnerId]) REFERENCES [User] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [ReleaseProject] (
        [Id] int NOT NULL IDENTITY,
        [ReleaseId] int NOT NULL,
        [ProjectId] int NOT NULL,
        CONSTRAINT [PK_ReleaseProject] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_ReleaseProject_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id]),
        CONSTRAINT [FK_ReleaseProject_Release_ReleaseId] FOREIGN KEY ([ReleaseId]) REFERENCES [Release] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [ProjectRepository] (
        [Id] int NOT NULL IDENTITY,
        [ProjectId] int NOT NULL,
        [GitConnectionId] int NOT NULL,
        [RepoRef] nvarchar(255) NOT NULL,
        [ExternalRepoId] nvarchar(64) NULL,
        [DisplayName] nvarchar(255) NULL,
        [WebUrl] nvarchar(500) NULL,
        [DefaultBranch] nvarchar(255) NULL,
        [IsPrivate] bit NULL,
        [IsPrimary] bit NOT NULL,
        [WebhookKey] nvarchar(64) NOT NULL,
        [WebhookSecret] nvarchar(max) NULL,
        [WebhookSecretCreatedOn] datetime2 NULL,
        [WebhookLastDeliveryOn] datetime2 NULL,
        [IssueSyncMode] int NOT NULL,
        [IssueSyncEnabledOn] datetime2 NULL,
        [IssueImportLabel] nvarchar(100) NULL,
        [IssueSyncTaskTypeIds] nvarchar(200) NULL,
        [IssueSyncComments] bit NOT NULL,
        [IssueTaskTypeId] int NULL,
        [IssueSeverityId] int NULL,
        [IssueOpenStatusId] int NULL,
        [IssueClosedStatusId] int NULL,
        [IssueSyncUserId] int NULL,
        [IssueImportLimitPerHour] int NOT NULL,
        [IssueLastPolledOn] datetime2 NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        [CreatedOn] datetime2 NOT NULL,
        [ModifiedOn] datetime2 NULL,
        CONSTRAINT [PK_ProjectRepository] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_ProjectRepository_GitConnection_GitConnectionId] FOREIGN KEY ([GitConnectionId]) REFERENCES [GitConnection] ([Id]),
        CONSTRAINT [FK_ProjectRepository_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id]),
        CONSTRAINT [FK_ProjectRepository_Severity_IssueSeverityId] FOREIGN KEY ([IssueSeverityId]) REFERENCES [Severity] ([Id]),
        CONSTRAINT [FK_ProjectRepository_Status_IssueClosedStatusId] FOREIGN KEY ([IssueClosedStatusId]) REFERENCES [Status] ([Id]),
        CONSTRAINT [FK_ProjectRepository_Status_IssueOpenStatusId] FOREIGN KEY ([IssueOpenStatusId]) REFERENCES [Status] ([Id]),
        CONSTRAINT [FK_ProjectRepository_TaskType_IssueTaskTypeId] FOREIGN KEY ([IssueTaskTypeId]) REFERENCES [TaskType] ([Id]),
        CONSTRAINT [FK_ProjectRepository_User_IssueSyncUserId] FOREIGN KEY ([IssueSyncUserId]) REFERENCES [User] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [StatusDurationMetric] (
        [Id] int NOT NULL IDENTITY,
        [Name] nvarchar(100) NOT NULL,
        [FromStatusId] int NOT NULL,
        [ToStatusId] int NOT NULL,
        [ProjectId] int NULL,
        [ShowOnTask] bit NOT NULL,
        [DisplayOrder] int NOT NULL,
        [Active] bit NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_StatusDurationMetric] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_StatusDurationMetric_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id]),
        CONSTRAINT [FK_StatusDurationMetric_Status_FromStatusId] FOREIGN KEY ([FromStatusId]) REFERENCES [Status] ([Id]),
        CONSTRAINT [FK_StatusDurationMetric_Status_ToStatusId] FOREIGN KEY ([ToStatusId]) REFERENCES [Status] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [WikiDocument] (
        [Id] int NOT NULL IDENTITY,
        [Title] nvarchar(250) NOT NULL,
        [ContentHtml] nvarchar(max) NOT NULL,
        [CategoryId] int NOT NULL,
        [ModuleId] int NULL,
        [SubModuleId] int NULL,
        [CreatedOn] datetime2 NOT NULL,
        [CreatedById] int NOT NULL,
        [ModifiedOn] datetime2 NOT NULL,
        [ModifiedById] int NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_WikiDocument] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_WikiDocument_Module_ModuleId] FOREIGN KEY ([ModuleId]) REFERENCES [Module] ([Id]),
        CONSTRAINT [FK_WikiDocument_SubModule_SubModuleId] FOREIGN KEY ([SubModuleId]) REFERENCES [SubModule] ([Id]),
        CONSTRAINT [FK_WikiDocument_User_CreatedById] FOREIGN KEY ([CreatedById]) REFERENCES [User] ([Id]),
        CONSTRAINT [FK_WikiDocument_User_ModifiedById] FOREIGN KEY ([ModifiedById]) REFERENCES [User] ([Id]),
        CONSTRAINT [FK_WikiDocument_WikiCategory_CategoryId] FOREIGN KEY ([CategoryId]) REFERENCES [WikiCategory] ([Id]) ON DELETE CASCADE
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [GitBranch] (
        [Id] int NOT NULL IDENTITY,
        [ProjectId] int NOT NULL,
        [ProjectRepositoryId] int NULL,
        [GitProjectReference] nvarchar(255) NOT NULL,
        [Name] nvarchar(255) NOT NULL,
        [BaseBranch] nvarchar(255) NULL,
        [Origin] int NULL,
        [CreatedById] int NOT NULL,
        [CreatedOn] datetime2 NOT NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_GitBranch] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_GitBranch_ProjectRepository_ProjectRepositoryId] FOREIGN KEY ([ProjectRepositoryId]) REFERENCES [ProjectRepository] ([Id]),
        CONSTRAINT [FK_GitBranch_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id]),
        CONSTRAINT [FK_GitBranch_User_CreatedById] FOREIGN KEY ([CreatedById]) REFERENCES [User] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [GitWebhookDelivery] (
        [Id] int NOT NULL IDENTITY,
        [ProjectRepositoryId] int NOT NULL,
        [DeliveryId] nvarchar(100) NOT NULL,
        [EventName] nvarchar(100) NOT NULL,
        [Status] int NOT NULL,
        [ReceivedOn] datetime2 NOT NULL,
        [ProcessedOn] datetime2 NULL,
        [Attempts] int NOT NULL,
        [Error] nvarchar(1000) NULL,
        [Payload] nvarchar(max) NULL,
        CONSTRAINT [PK_GitWebhookDelivery] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_GitWebhookDelivery_ProjectRepository_ProjectRepositoryId] FOREIGN KEY ([ProjectRepositoryId]) REFERENCES [ProjectRepository] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [Backlog] (
        [Id] int NOT NULL IDENTITY,
        [Code] uniqueidentifier NOT NULL,
        [Title] nvarchar(500) NOT NULL,
        [Description] nvarchar(max) NULL,
        [RootCauseAnalysis] nvarchar(max) NULL,
        [ExternalNotes] nvarchar(max) NULL,
        [EnvironmentJson] nvarchar(max) NULL,
        [ParentId] int NULL,
        [TaskTypeId] int NOT NULL,
        [SeverityId] int NOT NULL,
        [DueDate] date NULL,
        [PlannedStartDate] date NULL,
        [ProjectId] int NOT NULL,
        [ModuleId] int NULL,
        [SubModuleId] int NULL,
        [ReleaseId] int NULL,
        [ReporterId] int NULL,
        [AssigneeId] int NULL,
        [TesterId] int NULL,
        [ReOpenCount] int NOT NULL,
        [SubTaskCount] int NOT NULL,
        [AttachmentCount] int NULL,
        [CommentCount] int NULL,
        [StatusId] int NOT NULL,
        [ResolutionDetails] nvarchar(max) NULL,
        [MergeRequestId] int NULL,
        [MergeRequestRepositoryId] int NULL,
        [SourceId] int NULL,
        [SourceWikiDocumentId] int NULL,
        [CreatedById] int NOT NULL,
        [CreatedOn] datetime2 NOT NULL,
        [ModifiedById] int NULL,
        [ModifiedOn] datetime2 NULL,
        [Deleted] bit NOT NULL,
        CONSTRAINT [PK_Backlog] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_Backlog_Backlog_ParentId] FOREIGN KEY ([ParentId]) REFERENCES [Backlog] ([Id]),
        CONSTRAINT [FK_Backlog_Module_ModuleId] FOREIGN KEY ([ModuleId]) REFERENCES [Module] ([Id]),
        CONSTRAINT [FK_Backlog_ProjectRepository_MergeRequestRepositoryId] FOREIGN KEY ([MergeRequestRepositoryId]) REFERENCES [ProjectRepository] ([Id]),
        CONSTRAINT [FK_Backlog_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id]),
        CONSTRAINT [FK_Backlog_Release_ReleaseId] FOREIGN KEY ([ReleaseId]) REFERENCES [Release] ([Id]),
        CONSTRAINT [FK_Backlog_Reporter_ReporterId] FOREIGN KEY ([ReporterId]) REFERENCES [Reporter] ([Id]),
        CONSTRAINT [FK_Backlog_Severity_SeverityId] FOREIGN KEY ([SeverityId]) REFERENCES [Severity] ([Id]),
        CONSTRAINT [FK_Backlog_Status_StatusId] FOREIGN KEY ([StatusId]) REFERENCES [Status] ([Id]),
        CONSTRAINT [FK_Backlog_SubModule_SubModuleId] FOREIGN KEY ([SubModuleId]) REFERENCES [SubModule] ([Id]),
        CONSTRAINT [FK_Backlog_TaskType_TaskTypeId] FOREIGN KEY ([TaskTypeId]) REFERENCES [TaskType] ([Id]),
        CONSTRAINT [FK_Backlog_User_AssigneeId] FOREIGN KEY ([AssigneeId]) REFERENCES [User] ([Id]),
        CONSTRAINT [FK_Backlog_User_CreatedById] FOREIGN KEY ([CreatedById]) REFERENCES [User] ([Id]),
        CONSTRAINT [FK_Backlog_User_ModifiedById] FOREIGN KEY ([ModifiedById]) REFERENCES [User] ([Id]),
        CONSTRAINT [FK_Backlog_User_TesterId] FOREIGN KEY ([TesterId]) REFERENCES [User] ([Id]),
        CONSTRAINT [FK_Backlog_WikiDocument_SourceWikiDocumentId] FOREIGN KEY ([SourceWikiDocumentId]) REFERENCES [WikiDocument] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [WikiDocumentVersion] (
        [Id] int NOT NULL IDENTITY,
        [WikiDocumentId] int NOT NULL,
        [Title] nvarchar(250) NOT NULL,
        [ContentHtml] nvarchar(max) NOT NULL,
        [CreatedOn] datetime2 NOT NULL,
        [ModifiedById] int NOT NULL,
        [Note] nvarchar(max) NULL,
        CONSTRAINT [PK_WikiDocumentVersion] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_WikiDocumentVersion_User_ModifiedById] FOREIGN KEY ([ModifiedById]) REFERENCES [User] ([Id]),
        CONSTRAINT [FK_WikiDocumentVersion_WikiDocument_WikiDocumentId] FOREIGN KEY ([WikiDocumentId]) REFERENCES [WikiDocument] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [BacklogComment] (
        [Id] int NOT NULL IDENTITY,
        [BacklogId] int NOT NULL,
        [Comment] nvarchar(max) NOT NULL,
        [CreatedById] int NOT NULL,
        [SystemComment] bit NOT NULL,
        [PostToIssue] bit NOT NULL,
        [FieldName] nvarchar(100) NULL,
        [OldValue] nvarchar(max) NULL,
        [NewValue] nvarchar(max) NULL,
        [CreatedOn] datetime2 NOT NULL,
        [ModifiedById] int NULL,
        [ModifiedOn] datetime2 NULL,
        CONSTRAINT [PK_BacklogComment] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_BacklogComment_Backlog_BacklogId] FOREIGN KEY ([BacklogId]) REFERENCES [Backlog] ([Id]),
        CONSTRAINT [FK_BacklogComment_User_CreatedById] FOREIGN KEY ([CreatedById]) REFERENCES [User] ([Id]),
        CONSTRAINT [FK_BacklogComment_User_ModifiedById] FOREIGN KEY ([ModifiedById]) REFERENCES [User] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [BacklogCustomFieldValue] (
        [Id] int NOT NULL IDENTITY,
        [BacklogId] int NOT NULL,
        [CustomFieldId] int NOT NULL,
        [Value] nvarchar(max) NULL,
        CONSTRAINT [PK_BacklogCustomFieldValue] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_BacklogCustomFieldValue_Backlog_BacklogId] FOREIGN KEY ([BacklogId]) REFERENCES [Backlog] ([Id]),
        CONSTRAINT [FK_BacklogCustomFieldValue_CustomField_CustomFieldId] FOREIGN KEY ([CustomFieldId]) REFERENCES [CustomField] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [BacklogDocument] (
        [Id] int NOT NULL IDENTITY,
        [BacklogId] int NOT NULL,
        [DocumentId] int NOT NULL,
        [CreatedById] int NOT NULL,
        [CreatedOn] datetime2 NOT NULL,
        CONSTRAINT [PK_BacklogDocument] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_BacklogDocument_Backlog_BacklogId] FOREIGN KEY ([BacklogId]) REFERENCES [Backlog] ([Id]),
        CONSTRAINT [FK_BacklogDocument_Document_DocumentId] FOREIGN KEY ([DocumentId]) REFERENCES [Document] ([Id]),
        CONSTRAINT [FK_BacklogDocument_User_CreatedById] FOREIGN KEY ([CreatedById]) REFERENCES [User] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [BacklogStatusLog] (
        [Id] int NOT NULL IDENTITY,
        [BacklogId] int NOT NULL,
        [StatusId] int NOT NULL,
        [CreatedById] int NOT NULL,
        [CreatedOn] datetime2 NOT NULL,
        CONSTRAINT [PK_BacklogStatusLog] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_BacklogStatusLog_Backlog_BacklogId] FOREIGN KEY ([BacklogId]) REFERENCES [Backlog] ([Id]),
        CONSTRAINT [FK_BacklogStatusLog_Status_StatusId] FOREIGN KEY ([StatusId]) REFERENCES [Status] ([Id]),
        CONSTRAINT [FK_BacklogStatusLog_User_CreatedById] FOREIGN KEY ([CreatedById]) REFERENCES [User] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [BacklogTag] (
        [Id] int NOT NULL IDENTITY,
        [BacklogId] int NOT NULL,
        [TagId] int NOT NULL,
        CONSTRAINT [PK_BacklogTag] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_BacklogTag_Backlog_BacklogId] FOREIGN KEY ([BacklogId]) REFERENCES [Backlog] ([Id]),
        CONSTRAINT [FK_BacklogTag_Tag_TagId] FOREIGN KEY ([TagId]) REFERENCES [Tag] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [ExternalIssueLink] (
        [Id] int NOT NULL IDENTITY,
        [BacklogId] int NOT NULL,
        [ProjectRepositoryId] int NOT NULL,
        [ExternalId] nvarchar(64) NOT NULL,
        [Number] int NOT NULL,
        [Url] nvarchar(500) NULL,
        [RemoteState] nvarchar(20) NULL,
        [Snapshot] nvarchar(max) NULL,
        [SyncEnabled] bit NOT NULL,
        [CreatedOn] datetime2 NOT NULL,
        [LastSyncedOn] datetime2 NULL,
        [RemoteUpdatedOn] datetime2 NULL,
        [LastError] nvarchar(1000) NULL,
        CONSTRAINT [PK_ExternalIssueLink] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_ExternalIssueLink_Backlog_BacklogId] FOREIGN KEY ([BacklogId]) REFERENCES [Backlog] ([Id]),
        CONSTRAINT [FK_ExternalIssueLink_ProjectRepository_ProjectRepositoryId] FOREIGN KEY ([ProjectRepositoryId]) REFERENCES [ProjectRepository] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [GitBranchTask] (
        [Id] int NOT NULL IDENTITY,
        [GitBranchId] int NOT NULL,
        [BacklogId] int NOT NULL,
        [LinkedById] int NOT NULL,
        [LinkedOn] datetime2 NOT NULL,
        CONSTRAINT [PK_GitBranchTask] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_GitBranchTask_Backlog_BacklogId] FOREIGN KEY ([BacklogId]) REFERENCES [Backlog] ([Id]),
        CONSTRAINT [FK_GitBranchTask_GitBranch_GitBranchId] FOREIGN KEY ([GitBranchId]) REFERENCES [GitBranch] ([Id]),
        CONSTRAINT [FK_GitBranchTask_User_LinkedById] FOREIGN KEY ([LinkedById]) REFERENCES [User] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE TABLE [ExternalCommentLink] (
        [Id] int NOT NULL IDENTITY,
        [ExternalIssueLinkId] int NOT NULL,
        [BacklogCommentId] int NOT NULL,
        [ExternalCommentId] nvarchar(64) NOT NULL,
        [Inbound] bit NOT NULL,
        [ContentHash] nvarchar(64) NULL,
        [LastSyncedOn] datetime2 NOT NULL,
        CONSTRAINT [PK_ExternalCommentLink] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_ExternalCommentLink_BacklogComment_BacklogCommentId] FOREIGN KEY ([BacklogCommentId]) REFERENCES [BacklogComment] ([Id]),
        CONSTRAINT [FK_ExternalCommentLink_ExternalIssueLink_ExternalIssueLinkId] FOREIGN KEY ([ExternalIssueLinkId]) REFERENCES [ExternalIssueLink] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Announcement_Active_Deleted] ON [Announcement] ([Active], [Deleted]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE UNIQUE INDEX [IX_AnnouncementAcknowledgement_AnnouncementId_UserId] ON [AnnouncementAcknowledgement] ([AnnouncementId], [UserId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_AnnouncementAcknowledgement_UserId] ON [AnnouncementAcknowledgement] ([UserId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_AnnouncementRole_AnnouncementId_UserRoleId] ON [AnnouncementRole] ([AnnouncementId], [UserRoleId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_AnnouncementRole_UserRoleId] ON [AnnouncementRole] ([UserRoleId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_AuditLog_EntityName_EntityId] ON [AuditLog] ([EntityName], [EntityId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_AssigneeId] ON [Backlog] ([AssigneeId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_CreatedById] ON [Backlog] ([CreatedById]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_MergeRequestRepositoryId] ON [Backlog] ([MergeRequestRepositoryId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_ModifiedById] ON [Backlog] ([ModifiedById]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_ModuleId] ON [Backlog] ([ModuleId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_ParentId] ON [Backlog] ([ParentId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_ProjectId] ON [Backlog] ([ProjectId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_ReleaseId] ON [Backlog] ([ReleaseId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_ReporterId] ON [Backlog] ([ReporterId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_SeverityId] ON [Backlog] ([SeverityId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_SourceWikiDocumentId] ON [Backlog] ([SourceWikiDocumentId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_StatusId] ON [Backlog] ([StatusId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_SubModuleId] ON [Backlog] ([SubModuleId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_TaskTypeId] ON [Backlog] ([TaskTypeId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Backlog_TesterId] ON [Backlog] ([TesterId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_BacklogComment_BacklogId] ON [BacklogComment] ([BacklogId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_BacklogComment_CreatedById] ON [BacklogComment] ([CreatedById]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_BacklogComment_ModifiedById] ON [BacklogComment] ([ModifiedById]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_BacklogCustomFieldValue_BacklogId] ON [BacklogCustomFieldValue] ([BacklogId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_BacklogCustomFieldValue_CustomFieldId] ON [BacklogCustomFieldValue] ([CustomFieldId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_BacklogDocument_BacklogId] ON [BacklogDocument] ([BacklogId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_BacklogDocument_CreatedById] ON [BacklogDocument] ([CreatedById]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_BacklogDocument_DocumentId] ON [BacklogDocument] ([DocumentId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_BacklogStatusLog_BacklogId] ON [BacklogStatusLog] ([BacklogId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_BacklogStatusLog_CreatedById] ON [BacklogStatusLog] ([CreatedById]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_BacklogStatusLog_StatusId] ON [BacklogStatusLog] ([StatusId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_BacklogTag_BacklogId_TagId] ON [BacklogTag] ([BacklogId], [TagId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_BacklogTag_TagId] ON [BacklogTag] ([TagId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_CustomField_ProjectId] ON [CustomField] ([ProjectId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_EmailTemplate_EmailAccountId] ON [EmailTemplate] ([EmailAccountId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_ExternalCommentLink_BacklogCommentId] ON [ExternalCommentLink] ([BacklogCommentId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE UNIQUE INDEX [IX_ExternalCommentLink_ExternalIssueLinkId_ExternalCommentId] ON [ExternalCommentLink] ([ExternalIssueLinkId], [ExternalCommentId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_ExternalIssueLink_BacklogId] ON [ExternalIssueLink] ([BacklogId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE UNIQUE INDEX [IX_ExternalIssueLink_ProjectRepositoryId_Number] ON [ExternalIssueLink] ([ProjectRepositoryId], [Number]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_GitBranch_CreatedById] ON [GitBranch] ([CreatedById]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_GitBranch_GitProjectReference_Name] ON [GitBranch] ([GitProjectReference], [Name]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_GitBranch_ProjectId] ON [GitBranch] ([ProjectId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_GitBranch_ProjectRepositoryId] ON [GitBranch] ([ProjectRepositoryId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_GitBranchTask_BacklogId] ON [GitBranchTask] ([BacklogId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE UNIQUE INDEX [IX_GitBranchTask_GitBranchId_BacklogId] ON [GitBranchTask] ([GitBranchId], [BacklogId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_GitBranchTask_LinkedById] ON [GitBranchTask] ([LinkedById]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE UNIQUE INDEX [IX_GitWebhookDelivery_ProjectRepositoryId_DeliveryId] ON [GitWebhookDelivery] ([ProjectRepositoryId], [DeliveryId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_GitWebhookDelivery_ReceivedOn] ON [GitWebhookDelivery] ([ReceivedOn]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_LocaleResource_LanguageId] ON [LocaleResource] ([LanguageId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Module_ProjectId] ON [Module] ([ProjectId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Project_ClientId] ON [Project] ([ClientId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Project_CodeReviewerId] ON [Project] ([CodeReviewerId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Project_ProjectManagerId] ON [Project] ([ProjectManagerId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Project_TeamLeadId] ON [Project] ([TeamLeadId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_ProjectNotificationChannel_NotificationChannelId] ON [ProjectNotificationChannel] ([NotificationChannelId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE UNIQUE INDEX [IX_ProjectNotificationChannel_ProjectId_NotificationChannelId] ON [ProjectNotificationChannel] ([ProjectId], [NotificationChannelId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_ProjectRepository_GitConnectionId] ON [ProjectRepository] ([GitConnectionId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_ProjectRepository_IssueClosedStatusId] ON [ProjectRepository] ([IssueClosedStatusId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_ProjectRepository_IssueOpenStatusId] ON [ProjectRepository] ([IssueOpenStatusId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_ProjectRepository_IssueSeverityId] ON [ProjectRepository] ([IssueSeverityId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_ProjectRepository_IssueSyncUserId] ON [ProjectRepository] ([IssueSyncUserId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_ProjectRepository_IssueTaskTypeId] ON [ProjectRepository] ([IssueTaskTypeId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_ProjectRepository_ProjectId_GitConnectionId_RepoRef] ON [ProjectRepository] ([ProjectId], [GitConnectionId], [RepoRef]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE UNIQUE INDEX [IX_ProjectRepository_WebhookKey] ON [ProjectRepository] ([WebhookKey]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Release_ProjectId] ON [Release] ([ProjectId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_ReleaseProject_ProjectId] ON [ReleaseProject] ([ProjectId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE UNIQUE INDEX [IX_ReleaseProject_ReleaseId_ProjectId] ON [ReleaseProject] ([ReleaseId], [ProjectId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Reporter_ProjectId] ON [Reporter] ([ProjectId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_Status_ProjectId] ON [Status] ([ProjectId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_StatusDurationMetric_FromStatusId] ON [StatusDurationMetric] ([FromStatusId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_StatusDurationMetric_ProjectId] ON [StatusDurationMetric] ([ProjectId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_StatusDurationMetric_ToStatusId] ON [StatusDurationMetric] ([ToStatusId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_SubModule_ModuleId] ON [SubModule] ([ModuleId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_SubModule_OwnerId] ON [SubModule] ([OwnerId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_User_AddressId] ON [User] ([AddressId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_User_LanguageId] ON [User] ([LanguageId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE UNIQUE INDEX [IX_UserGitAccount_GitConnectionId_ExternalUserId] ON [UserGitAccount] ([GitConnectionId], [ExternalUserId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE UNIQUE INDEX [IX_UserGitAccount_UserId_GitConnectionId] ON [UserGitAccount] ([UserId], [GitConnectionId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_UserNotification_UserId_DedupeKey] ON [UserNotification] ([UserId], [DedupeKey]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_UserNotification_UserId_IsRead_CreatedOnUtc] ON [UserNotification] ([UserId], [IsRead], [CreatedOnUtc]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_UserPassword_UserId] ON [UserPassword] ([UserId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_UserProjectMap_ProjectId] ON [UserProjectMap] ([ProjectId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_UserProjectMap_UserId] ON [UserProjectMap] ([UserId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_UserRoleMap_UserRoleId] ON [UserRoleMap] ([UserRoleId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_UserRolePermissionMap_UserRoleId] ON [UserRolePermissionMap] ([UserRoleId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_WikiCategory_ParentCategoryId] ON [WikiCategory] ([ParentCategoryId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_WikiCategory_ProjectId] ON [WikiCategory] ([ProjectId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_WikiDocument_CategoryId] ON [WikiDocument] ([CategoryId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_WikiDocument_CreatedById] ON [WikiDocument] ([CreatedById]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_WikiDocument_ModifiedById] ON [WikiDocument] ([ModifiedById]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_WikiDocument_ModuleId] ON [WikiDocument] ([ModuleId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_WikiDocument_SubModuleId] ON [WikiDocument] ([SubModuleId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_WikiDocumentVersion_ModifiedById] ON [WikiDocumentVersion] ([ModifiedById]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    CREATE INDEX [IX_WikiDocumentVersion_WikiDocumentId] ON [WikiDocumentVersion] ([WikiDocumentId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261020195900_InitialCreate'
)
BEGIN
    INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion])
    VALUES (N'20261020195900_InitialCreate', N'10.0.13');
END;

COMMIT;
GO

BEGIN TRANSACTION;
IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261026093041_AddWikiImage'
)
BEGIN
    CREATE TABLE [WikiImage] (
        [Id] int NOT NULL IDENTITY,
        [DocumentId] int NOT NULL,
        [ProjectId] int NOT NULL,
        [WikiDocumentId] int NOT NULL,
        [UploadedById] int NOT NULL,
        [CreatedOn] datetime2 NOT NULL,
        CONSTRAINT [PK_WikiImage] PRIMARY KEY ([Id]),
        CONSTRAINT [FK_WikiImage_Document_DocumentId] FOREIGN KEY ([DocumentId]) REFERENCES [Document] ([Id]),
        CONSTRAINT [FK_WikiImage_Project_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [Project] ([Id]),
        CONSTRAINT [FK_WikiImage_User_UploadedById] FOREIGN KEY ([UploadedById]) REFERENCES [User] ([Id]),
        CONSTRAINT [FK_WikiImage_WikiDocument_WikiDocumentId] FOREIGN KEY ([WikiDocumentId]) REFERENCES [WikiDocument] ([Id])
    );
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261026093041_AddWikiImage'
)
BEGIN
    CREATE UNIQUE INDEX [IX_WikiImage_DocumentId] ON [WikiImage] ([DocumentId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261026093041_AddWikiImage'
)
BEGIN
    CREATE INDEX [IX_WikiImage_ProjectId] ON [WikiImage] ([ProjectId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261026093041_AddWikiImage'
)
BEGIN
    CREATE INDEX [IX_WikiImage_UploadedById] ON [WikiImage] ([UploadedById]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261026093041_AddWikiImage'
)
BEGIN
    CREATE INDEX [IX_WikiImage_WikiDocumentId] ON [WikiImage] ([WikiDocumentId]);
END;

IF NOT EXISTS (
    SELECT * FROM [__EFMigrationsHistory]
    WHERE [MigrationId] = N'20261026093041_AddWikiImage'
)
BEGIN
    INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion])
    VALUES (N'20261026093041_AddWikiImage', N'10.0.13');
END;

COMMIT;
GO