1
0
mirror of https://github.com/bitwarden/server synced 2025-12-06 00:03:34 +00:00
Files
server/util/Migrator/DbScripts/2025-10-28_00_AddOrganizationReportMetricColumns.sql
Graham Walker 2b10907ef3 PM-26966 added new metric columns to organization report table (#6486)
* PM-26966 added new metric columns to organization report table

* PM-26966 fixing migration

* PM-26966 fixing formatting issue.

* PM-26966 updating unit tests

* PM-26966 fixing SQL to read from view
2025-10-28 11:17:45 -05:00

162 lines
4.7 KiB
Transact-SQL

IF COL_LENGTH('dbo.OrganizationReport', 'ApplicationCount') IS NULL
BEGIN
ALTER TABLE [dbo].[OrganizationReport]
ADD [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
END
GO
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
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]
)
VALUES (
@Id,
@OrganizationId,
@ReportData,
@CreationDate,
@ContentEncryptionKey,
@SummaryData,
@ApplicationData,
@RevisionDate,
@ApplicationCount,
@ApplicationAtRiskCount,
@CriticalApplicationCount,
@CriticalApplicationAtRiskCount,
@MemberCount,
@MemberAtRiskCount,
@CriticalMemberCount,
@CriticalMemberAtRiskCount,
@PasswordCount,
@PasswordAtRiskCount,
@CriticalPasswordCount,
@CriticalPasswordAtRiskCount
);
END
GO
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
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
WHERE [Id] = @Id;
END;
GO
CREATE OR ALTER VIEW [dbo].[OrganizationReportView]
AS
SELECT
*
FROM
[dbo].[OrganizationReport]
GO
CREATE OR ALTER PROCEDURE [dbo].[OrganizationReport_GetLatestByOrganizationId]
@OrganizationId UNIQUEIDENTIFIER
AS
BEGIN
SET NOCOUNT ON
SELECT TOP 1
*
FROM [dbo].[OrganizationReportView]
WHERE [OrganizationId] = @OrganizationId
ORDER BY [RevisionDate] DESC
END
GO