mirror of
https://github.com/bitwarden/server.git
synced 2026-01-31 14:13:18 +08:00
189 lines
4.9 KiB
MySQL
189 lines
4.9 KiB
MySQL
|
|
-- Create or alter Event_Create procedure
|
||
|
|
CREATE OR ALTER PROCEDURE [dbo].[Event_Create]
|
||
|
|
@Id UNIQUEIDENTIFIER OUTPUT,
|
||
|
|
@Type INT,
|
||
|
|
@UserId UNIQUEIDENTIFIER,
|
||
|
|
@OrganizationId UNIQUEIDENTIFIER,
|
||
|
|
@InstallationId UNIQUEIDENTIFIER,
|
||
|
|
@ProviderId UNIQUEIDENTIFIER,
|
||
|
|
@CipherId UNIQUEIDENTIFIER,
|
||
|
|
@CollectionId UNIQUEIDENTIFIER,
|
||
|
|
@PolicyId UNIQUEIDENTIFIER,
|
||
|
|
@GroupId UNIQUEIDENTIFIER,
|
||
|
|
@OrganizationUserId UNIQUEIDENTIFIER,
|
||
|
|
@ProviderUserId UNIQUEIDENTIFIER,
|
||
|
|
@ProviderOrganizationId UNIQUEIDENTIFIER = NULL,
|
||
|
|
@ActingUserId UNIQUEIDENTIFIER,
|
||
|
|
@DeviceType SMALLINT,
|
||
|
|
@IpAddress VARCHAR(50),
|
||
|
|
@Date DATETIME2(7),
|
||
|
|
@SystemUser TINYINT = NULL,
|
||
|
|
@DomainName VARCHAR(256),
|
||
|
|
@SecretId UNIQUEIDENTIFIER = NULL,
|
||
|
|
@ServiceAccountId UNIQUEIDENTIFIER = NULL,
|
||
|
|
@ProjectId UNIQUEIDENTIFIER = NULL,
|
||
|
|
@GrantedServiceAccountId UNIQUEIDENTIFIER = NULL
|
||
|
|
AS
|
||
|
|
BEGIN
|
||
|
|
SET NOCOUNT ON;
|
||
|
|
|
||
|
|
INSERT INTO [dbo].[Event]
|
||
|
|
(
|
||
|
|
[Id],
|
||
|
|
[Type],
|
||
|
|
[UserId],
|
||
|
|
[OrganizationId],
|
||
|
|
[InstallationId],
|
||
|
|
[ProviderId],
|
||
|
|
[CipherId],
|
||
|
|
[CollectionId],
|
||
|
|
[PolicyId],
|
||
|
|
[GroupId],
|
||
|
|
[OrganizationUserId],
|
||
|
|
[ProviderUserId],
|
||
|
|
[ProviderOrganizationId],
|
||
|
|
[ActingUserId],
|
||
|
|
[DeviceType],
|
||
|
|
[IpAddress],
|
||
|
|
[Date],
|
||
|
|
[SystemUser],
|
||
|
|
[DomainName],
|
||
|
|
[SecretId],
|
||
|
|
[ServiceAccountId],
|
||
|
|
[ProjectId],
|
||
|
|
[GrantedServiceAccountId]
|
||
|
|
)
|
||
|
|
VALUES
|
||
|
|
(
|
||
|
|
@Id,
|
||
|
|
@Type,
|
||
|
|
@UserId,
|
||
|
|
@OrganizationId,
|
||
|
|
@InstallationId,
|
||
|
|
@ProviderId,
|
||
|
|
@CipherId,
|
||
|
|
@CollectionId,
|
||
|
|
@PolicyId,
|
||
|
|
@GroupId,
|
||
|
|
@OrganizationUserId,
|
||
|
|
@ProviderUserId,
|
||
|
|
@ProviderOrganizationId,
|
||
|
|
@ActingUserId,
|
||
|
|
@DeviceType,
|
||
|
|
@IpAddress,
|
||
|
|
@Date,
|
||
|
|
@SystemUser,
|
||
|
|
@DomainName,
|
||
|
|
@SecretId,
|
||
|
|
@ServiceAccountId,
|
||
|
|
@ProjectId,
|
||
|
|
@GrantedServiceAccountId
|
||
|
|
);
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
-- Create or alter Event_ReadPageByServiceAccountId procedure
|
||
|
|
CREATE OR ALTER PROCEDURE [dbo].[Event_ReadPageByServiceAccountId]
|
||
|
|
@GrantedServiceAccountId UNIQUEIDENTIFIER,
|
||
|
|
@StartDate DATETIME2(7),
|
||
|
|
@EndDate DATETIME2(7),
|
||
|
|
@BeforeDate DATETIME2(7),
|
||
|
|
@PageSize INT
|
||
|
|
AS
|
||
|
|
BEGIN
|
||
|
|
SET NOCOUNT ON;
|
||
|
|
|
||
|
|
SELECT
|
||
|
|
e.Id,
|
||
|
|
e.Date,
|
||
|
|
e.Type,
|
||
|
|
e.UserId,
|
||
|
|
e.OrganizationId,
|
||
|
|
e.InstallationId,
|
||
|
|
e.ProviderId,
|
||
|
|
e.CipherId,
|
||
|
|
e.CollectionId,
|
||
|
|
e.PolicyId,
|
||
|
|
e.GroupId,
|
||
|
|
e.OrganizationUserId,
|
||
|
|
e.ProviderUserId,
|
||
|
|
e.ProviderOrganizationId,
|
||
|
|
e.DeviceType,
|
||
|
|
e.IpAddress,
|
||
|
|
e.ActingUserId,
|
||
|
|
e.SystemUser,
|
||
|
|
e.DomainName,
|
||
|
|
e.SecretId,
|
||
|
|
e.ServiceAccountId,
|
||
|
|
e.ProjectId,
|
||
|
|
e.GrantedServiceAccountId
|
||
|
|
FROM
|
||
|
|
[dbo].[EventView] e
|
||
|
|
WHERE
|
||
|
|
[Date] >= @StartDate
|
||
|
|
AND (@BeforeDate IS NOT NULL OR [Date] <= @EndDate)
|
||
|
|
AND (@BeforeDate IS NULL OR [Date] < @BeforeDate)
|
||
|
|
AND [GrantedServiceAccountId] = @GrantedServiceAccountId
|
||
|
|
ORDER BY [Date] DESC
|
||
|
|
OFFSET 0 ROWS
|
||
|
|
FETCH NEXT @PageSize ROWS ONLY;
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
CREATE OR ALTER PROCEDURE [dbo].[Event_ReadPageByOrganizationIdServiceAccountId]
|
||
|
|
@OrganizationId UNIQUEIDENTIFIER,
|
||
|
|
@ServiceAccountId UNIQUEIDENTIFIER,
|
||
|
|
@StartDate DATETIME2(7),
|
||
|
|
@EndDate DATETIME2(7),
|
||
|
|
@BeforeDate DATETIME2(7),
|
||
|
|
@PageSize INT
|
||
|
|
AS
|
||
|
|
BEGIN
|
||
|
|
SET NOCOUNT ON
|
||
|
|
|
||
|
|
SELECT
|
||
|
|
*
|
||
|
|
FROM
|
||
|
|
[dbo].[EventView]
|
||
|
|
WHERE
|
||
|
|
[Date] >= @StartDate
|
||
|
|
AND (@BeforeDate IS NOT NULL OR [Date] <= @EndDate)
|
||
|
|
AND (@BeforeDate IS NULL OR [Date] < @BeforeDate)
|
||
|
|
AND [OrganizationId] = @OrganizationId
|
||
|
|
AND ([ServiceAccountId] = @ServiceAccountId OR [GrantedServiceAccountId] = @ServiceAccountId)
|
||
|
|
ORDER BY [Date] DESC
|
||
|
|
OFFSET 0 ROWS
|
||
|
|
FETCH NEXT @PageSize ROWS ONLY
|
||
|
|
END
|
||
|
|
GO
|
||
|
|
|
||
|
|
IF EXISTS(SELECT 1 FROM sys.indexes WHERE name = 'IX_Event_DateOrganizationIdUserId')
|
||
|
|
BEGIN
|
||
|
|
-- Check if neither ServiceAccountId nor GrantedServiceAccountId are included columns
|
||
|
|
IF NOT EXISTS (
|
||
|
|
SELECT 1
|
||
|
|
FROM
|
||
|
|
sys.indexes i
|
||
|
|
INNER JOIN
|
||
|
|
sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
|
||
|
|
INNER JOIN
|
||
|
|
sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
|
||
|
|
WHERE
|
||
|
|
i.object_id = OBJECT_ID('[dbo].[Event]')
|
||
|
|
AND i.name = 'IX_Event_DateOrganizationIdUserId'
|
||
|
|
AND c.name IN ('ServiceAccountId', 'GrantedServiceAccountId')
|
||
|
|
AND ic.is_included_column = 1
|
||
|
|
)
|
||
|
|
BEGIN
|
||
|
|
CREATE NONCLUSTERED INDEX [IX_Event_DateOrganizationIdUserId]
|
||
|
|
ON [dbo].[Event]
|
||
|
|
( [Date] DESC,
|
||
|
|
[OrganizationId] ASC,
|
||
|
|
[ActingUserId] ASC,
|
||
|
|
[CipherId] ASC
|
||
|
|
)
|
||
|
|
INCLUDE ([ServiceAccountId], [GrantedServiceAccountId])
|
||
|
|
WITH (DROP_EXISTING = ON)
|
||
|
|
END
|
||
|
|
END
|
||
|
|
GO
|