IF OBJECT_ID('[dbo].[Cipher_DeleteDeleted]') IS NOT NULL
BEGIN
    DROP PROCEDURE [dbo].[Cipher_DeleteDeleted]
END
GO

CREATE PROCEDURE [dbo].[Cipher_DeleteDeleted]
    @DeletedDateBefore DATETIME2 (7)
AS
BEGIN
    SET NOCOUNT ON

    DECLARE @BatchSize INT = 100

    WHILE @BatchSize > 0
    BEGIN
        DELETE TOP(@BatchSize)
        FROM
            [dbo].[Cipher]
        WHERE
            [DeletedDate] < @DeletedDateBefore

        SET @BatchSize = @@ROWCOUNT
    END
END
GO

IF NOT EXISTS (
    SELECT * FROM sys.indexes  WHERE [Name]='IX_Cipher_DeletedDate'
    AND object_id = OBJECT_ID('[dbo].[Cipher]')
)
BEGIN
    CREATE NONCLUSTERED INDEX [IX_Cipher_DeletedDate]
        ON [dbo].[Cipher]([DeletedDate] ASC)
END
GO