Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/Core/Dirt/Entities/OrganizationReport.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ public class OrganizationReport : ITableObject<Guid>
public int? PasswordAtRiskCount { get; set; }
public int? CriticalPasswordCount { get; set; }
public int? CriticalPasswordAtRiskCount { get; set; }


public string? ReportFile { get; set; }

public void SetNewId()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ CREATE PROCEDURE [dbo].[OrganizationReport_Create]
@PasswordCount INT = NULL,
@PasswordAtRiskCount INT = NULL,
@CriticalPasswordCount INT = NULL,
@CriticalPasswordAtRiskCount INT = NULL
@CriticalPasswordAtRiskCount INT = NULL,
@ReportFile NVARCHAR(MAX) = NULL
AS
BEGIN
SET NOCOUNT ON;
Expand All @@ -44,7 +45,8 @@ INSERT INTO [dbo].[OrganizationReport](
[PasswordCount],
[PasswordAtRiskCount],
[CriticalPasswordCount],
[CriticalPasswordAtRiskCount]
[CriticalPasswordAtRiskCount],
[ReportFile]
)
VALUES (
@Id,
Expand All @@ -66,6 +68,7 @@ VALUES (
@PasswordCount,
@PasswordAtRiskCount,
@CriticalPasswordCount,
@CriticalPasswordAtRiskCount
@CriticalPasswordAtRiskCount,
@ReportFile
);
END
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ CREATE PROCEDURE [dbo].[OrganizationReport_Update]
@PasswordCount INT = NULL,
@PasswordAtRiskCount INT = NULL,
@CriticalPasswordCount INT = NULL,
@CriticalPasswordAtRiskCount INT = NULL
@CriticalPasswordAtRiskCount INT = NULL,
@ReportFile NVARCHAR(MAX) = NULL
AS
BEGIN
SET NOCOUNT ON;
Expand All @@ -42,6 +43,7 @@ BEGIN
[PasswordCount] = @PasswordCount,
[PasswordAtRiskCount] = @PasswordAtRiskCount,
[CriticalPasswordCount] = @CriticalPasswordCount,
[CriticalPasswordAtRiskCount] = @CriticalPasswordAtRiskCount
[CriticalPasswordAtRiskCount] = @CriticalPasswordAtRiskCount,
[ReportFile] = @ReportFile
WHERE [Id] = @Id;
END;
1 change: 1 addition & 0 deletions src/Sql/dbo/Dirt/Tables/OrganizationReport.sql
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ CREATE TABLE [dbo].[OrganizationReport] (
[PasswordAtRiskCount] INT NULL,
[CriticalPasswordCount] INT NULL,
[CriticalPasswordAtRiskCount] INT NULL,
[ReportFile] NVARCHAR(MAX) NULL,
CONSTRAINT [PK_OrganizationReport] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_OrganizationReport_Organization] FOREIGN KEY ([OrganizationId]) REFERENCES [dbo].[Organization] ([Id])
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,27 @@ public void ApplyMigration()
DeleteMigrationHistory();

var migrator = _databaseContext.GetService<IMigrator>();
migrator.Migrate(_migrationName);

if (_databaseType == SupportedDatabaseProviders.Sqlite)
{
// SQLite doesn't support DropColumn, so we can't use Migrate() which
// reverts subsequent migrations (calling their Down() methods).
// Instead, generate and execute only the target migration's Up() SQL.
var migrationsAssembly = _databaseContext.GetService<IMigrationsAssembly>();
var migrations = migrationsAssembly.Migrations.Keys.ToList();
var targetMigrationId = migrations.SingleOrDefault(m => m.EndsWith(_migrationName))
?? throw new InvalidOperationException(
$"Migration '{_migrationName}' was not found in the migrations assembly.");
var targetIndex = migrations.IndexOf(targetMigrationId);
var previousMigrationId = targetIndex > 0 ? migrations[targetIndex - 1] : "0";

var script = migrator.GenerateScript(previousMigrationId, targetMigrationId);
_databaseContext.Database.ExecuteSqlRaw(script);
}
else
{
migrator.Migrate(_migrationName);
}
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
-- Add ReportFile column to OrganizationReport
IF COL_LENGTH('[dbo].[OrganizationReport]', 'ReportFile') IS NULL
BEGIN
ALTER TABLE [dbo].[OrganizationReport]
ADD [ReportFile] NVARCHAR(MAX) NULL;
END
GO

-- Recreate OrganizationReport_Create to include ReportFile
CREATE OR ALTER PROCEDURE [dbo].[OrganizationReport_Create]
@Id UNIQUEIDENTIFIER OUTPUT,
@OrganizationId UNIQUEIDENTIFIER,
@ReportData NVARCHAR(MAX),
@CreationDate DATETIME2(7),
@ContentEncryptionKey VARCHAR(MAX),
@SummaryData NVARCHAR(MAX),
@ApplicationData NVARCHAR(MAX),
@RevisionDate DATETIME2(7),
@ApplicationCount INT = NULL,
@ApplicationAtRiskCount INT = NULL,
@CriticalApplicationCount INT = NULL,
@CriticalApplicationAtRiskCount INT = NULL,
@MemberCount INT = NULL,
@MemberAtRiskCount INT = NULL,
@CriticalMemberCount INT = NULL,
@CriticalMemberAtRiskCount INT = NULL,
@PasswordCount INT = NULL,
@PasswordAtRiskCount INT = NULL,
@CriticalPasswordCount INT = NULL,
@CriticalPasswordAtRiskCount INT = NULL,
@ReportFile NVARCHAR(MAX) = NULL
AS
BEGIN
SET NOCOUNT ON;

INSERT INTO [dbo].[OrganizationReport](
[Id],
[OrganizationId],
[ReportData],
[CreationDate],
[ContentEncryptionKey],
[SummaryData],
[ApplicationData],
[RevisionDate],
[ApplicationCount],
[ApplicationAtRiskCount],
[CriticalApplicationCount],
[CriticalApplicationAtRiskCount],
[MemberCount],
[MemberAtRiskCount],
[CriticalMemberCount],
[CriticalMemberAtRiskCount],
[PasswordCount],
[PasswordAtRiskCount],
[CriticalPasswordCount],
[CriticalPasswordAtRiskCount],
[ReportFile]
)
VALUES (
@Id,
@OrganizationId,
@ReportData,
@CreationDate,
@ContentEncryptionKey,
@SummaryData,
@ApplicationData,
@RevisionDate,
@ApplicationCount,
@ApplicationAtRiskCount,
@CriticalApplicationCount,
@CriticalApplicationAtRiskCount,
@MemberCount,
@MemberAtRiskCount,
@CriticalMemberCount,
@CriticalMemberAtRiskCount,
@PasswordCount,
@PasswordAtRiskCount,
@CriticalPasswordCount,
@CriticalPasswordAtRiskCount,
@ReportFile
);
END
GO

-- Recreate OrganizationReport_Update to include ReportFile
CREATE OR ALTER PROCEDURE [dbo].[OrganizationReport_Update]
@Id UNIQUEIDENTIFIER,
@OrganizationId UNIQUEIDENTIFIER,
@ReportData NVARCHAR(MAX),
@CreationDate DATETIME2(7),
@ContentEncryptionKey VARCHAR(MAX),
@SummaryData NVARCHAR(MAX),
@ApplicationData NVARCHAR(MAX),
@RevisionDate DATETIME2(7),
@ApplicationCount INT = NULL,
@ApplicationAtRiskCount INT = NULL,
@CriticalApplicationCount INT = NULL,
@CriticalApplicationAtRiskCount INT = NULL,
@MemberCount INT = NULL,
@MemberAtRiskCount INT = NULL,
@CriticalMemberCount INT = NULL,
@CriticalMemberAtRiskCount INT = NULL,
@PasswordCount INT = NULL,
@PasswordAtRiskCount INT = NULL,
@CriticalPasswordCount INT = NULL,
@CriticalPasswordAtRiskCount INT = NULL,
@ReportFile NVARCHAR(MAX) = NULL
AS
BEGIN
SET NOCOUNT ON;
UPDATE [dbo].[OrganizationReport]
SET
[OrganizationId] = @OrganizationId,
[ReportData] = @ReportData,
[CreationDate] = @CreationDate,
[ContentEncryptionKey] = @ContentEncryptionKey,
[SummaryData] = @SummaryData,
[ApplicationData] = @ApplicationData,
[RevisionDate] = @RevisionDate,
[ApplicationCount] = @ApplicationCount,
[ApplicationAtRiskCount] = @ApplicationAtRiskCount,
[CriticalApplicationCount] = @CriticalApplicationCount,
[CriticalApplicationAtRiskCount] = @CriticalApplicationAtRiskCount,
[MemberCount] = @MemberCount,
[MemberAtRiskCount] = @MemberAtRiskCount,
[CriticalMemberCount] = @CriticalMemberCount,
[CriticalMemberAtRiskCount] = @CriticalMemberAtRiskCount,
[PasswordCount] = @PasswordCount,
[PasswordAtRiskCount] = @PasswordAtRiskCount,
[CriticalPasswordCount] = @CriticalPasswordCount,
[CriticalPasswordAtRiskCount] = @CriticalPasswordAtRiskCount,
[ReportFile] = @ReportFile
WHERE [Id] = @Id;
END;
GO
Loading
Loading