mirror of
https://github.com/bitwarden/server.git
synced 2024-11-25 12:45:18 +01:00
Remove Batch (#2274)
This commit is contained in:
parent
f848eb2477
commit
735ad264f1
@ -8,7 +8,6 @@ using Bit.Core.OrganizationFeatures.OrganizationSponsorships.FamiliesForEnterpri
|
|||||||
using Bit.Core.Repositories;
|
using Bit.Core.Repositories;
|
||||||
using Bit.Core.Services;
|
using Bit.Core.Services;
|
||||||
using Bit.Core.Settings;
|
using Bit.Core.Settings;
|
||||||
using Bit.Core.Utilities;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Bit.Core.OrganizationFeatures.OrganizationSponsorships.FamiliesForEnterprise.SelfHosted;
|
namespace Bit.Core.OrganizationFeatures.OrganizationSponsorships.FamiliesForEnterprise.SelfHosted;
|
||||||
@ -71,7 +70,7 @@ public class SelfHostedSyncSponsorshipsCommand : BaseIdentityClientService, ISel
|
|||||||
}
|
}
|
||||||
var syncedSponsorships = new List<OrganizationSponsorshipData>();
|
var syncedSponsorships = new List<OrganizationSponsorshipData>();
|
||||||
|
|
||||||
foreach (var orgSponsorshipsBatch in CoreHelpers.Batch(organizationSponsorshipsDict.Values, 1000))
|
foreach (var orgSponsorshipsBatch in organizationSponsorshipsDict.Values.Chunk(1000))
|
||||||
{
|
{
|
||||||
var response = await SendAsync<OrganizationSponsorshipSyncRequestModel, OrganizationSponsorshipSyncResponseModel>(HttpMethod.Post, "organization/sponsorship/sync", new OrganizationSponsorshipSyncRequestModel
|
var response = await SendAsync<OrganizationSponsorshipSyncRequestModel, OrganizationSponsorshipSyncResponseModel>(HttpMethod.Post, "organization/sponsorship/sync", new OrganizationSponsorshipSyncRequestModel
|
||||||
{
|
{
|
||||||
|
@ -403,7 +403,7 @@ public class CipherService : ICipherService
|
|||||||
|
|
||||||
var events = deletingCiphers.Select(c =>
|
var events = deletingCiphers.Select(c =>
|
||||||
new Tuple<Cipher, EventType, DateTime?>(c, EventType.Cipher_Deleted, null));
|
new Tuple<Cipher, EventType, DateTime?>(c, EventType.Cipher_Deleted, null));
|
||||||
foreach (var eventsBatch in events.Batch(100))
|
foreach (var eventsBatch in events.Chunk(100))
|
||||||
{
|
{
|
||||||
await _eventService.LogCipherEventsAsync(eventsBatch);
|
await _eventService.LogCipherEventsAsync(eventsBatch);
|
||||||
}
|
}
|
||||||
@ -574,7 +574,7 @@ public class CipherService : ICipherService
|
|||||||
|
|
||||||
var events = cipherInfos.Select(c =>
|
var events = cipherInfos.Select(c =>
|
||||||
new Tuple<Cipher, EventType, DateTime?>(c.cipher, EventType.Cipher_Shared, null));
|
new Tuple<Cipher, EventType, DateTime?>(c.cipher, EventType.Cipher_Shared, null));
|
||||||
foreach (var eventsBatch in events.Batch(100))
|
foreach (var eventsBatch in events.Chunk(100))
|
||||||
{
|
{
|
||||||
await _eventService.LogCipherEventsAsync(eventsBatch);
|
await _eventService.LogCipherEventsAsync(eventsBatch);
|
||||||
}
|
}
|
||||||
@ -791,7 +791,7 @@ public class CipherService : ICipherService
|
|||||||
|
|
||||||
var events = deletingCiphers.Select(c =>
|
var events = deletingCiphers.Select(c =>
|
||||||
new Tuple<Cipher, EventType, DateTime?>(c, EventType.Cipher_SoftDeleted, null));
|
new Tuple<Cipher, EventType, DateTime?>(c, EventType.Cipher_SoftDeleted, null));
|
||||||
foreach (var eventsBatch in events.Batch(100))
|
foreach (var eventsBatch in events.Chunk(100))
|
||||||
{
|
{
|
||||||
await _eventService.LogCipherEventsAsync(eventsBatch);
|
await _eventService.LogCipherEventsAsync(eventsBatch);
|
||||||
}
|
}
|
||||||
@ -840,7 +840,7 @@ public class CipherService : ICipherService
|
|||||||
c.DeletedDate = null;
|
c.DeletedDate = null;
|
||||||
return new Tuple<Cipher, EventType, DateTime?>(c, EventType.Cipher_Restored, null);
|
return new Tuple<Cipher, EventType, DateTime?>(c, EventType.Cipher_Restored, null);
|
||||||
});
|
});
|
||||||
foreach (var eventsBatch in events.Batch(100))
|
foreach (var eventsBatch in events.Chunk(100))
|
||||||
{
|
{
|
||||||
await _eventService.LogCipherEventsAsync(eventsBatch);
|
await _eventService.LogCipherEventsAsync(eventsBatch);
|
||||||
}
|
}
|
||||||
|
@ -70,32 +70,6 @@ public static class CoreHelpers
|
|||||||
return new Guid(guidArray);
|
return new Guid(guidArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IEnumerable<IEnumerable<T>> Batch<T>(this IEnumerable<T> source, int size)
|
|
||||||
{
|
|
||||||
T[] bucket = null;
|
|
||||||
var count = 0;
|
|
||||||
foreach (var item in source)
|
|
||||||
{
|
|
||||||
if (bucket == null)
|
|
||||||
{
|
|
||||||
bucket = new T[size];
|
|
||||||
}
|
|
||||||
bucket[count++] = item;
|
|
||||||
if (count != size)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
yield return bucket.Select(x => x);
|
|
||||||
bucket = null;
|
|
||||||
count = 0;
|
|
||||||
}
|
|
||||||
// Return the last bucket with all remaining elements
|
|
||||||
if (bucket != null && count > 0)
|
|
||||||
{
|
|
||||||
yield return bucket.Take(count);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string CleanCertificateThumbprint(string thumbprint)
|
public static string CleanCertificateThumbprint(string thumbprint)
|
||||||
{
|
{
|
||||||
// Clean possible garbage characters from thumbprint copy/paste
|
// Clean possible garbage characters from thumbprint copy/paste
|
||||||
|
@ -3,7 +3,6 @@ using Bit.Core.Entities;
|
|||||||
using Bit.Core.Enums;
|
using Bit.Core.Enums;
|
||||||
using Bit.Core.Repositories;
|
using Bit.Core.Repositories;
|
||||||
using Bit.Core.Services;
|
using Bit.Core.Services;
|
||||||
using Bit.Core.Utilities;
|
|
||||||
using Bit.Events.Models;
|
using Bit.Events.Models;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
@ -95,7 +94,7 @@ public class CollectController : Controller
|
|||||||
}
|
}
|
||||||
if (cipherEvents.Any())
|
if (cipherEvents.Any())
|
||||||
{
|
{
|
||||||
foreach (var eventsBatch in cipherEvents.Batch(50))
|
foreach (var eventsBatch in cipherEvents.Chunk(50))
|
||||||
{
|
{
|
||||||
await _eventService.LogCipherEventsAsync(eventsBatch);
|
await _eventService.LogCipherEventsAsync(eventsBatch);
|
||||||
}
|
}
|
||||||
|
@ -70,31 +70,6 @@ public class CoreHelpersTests
|
|||||||
Assert.Equal(expectedComb, comb);
|
Assert.Equal(expectedComb, comb);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
|
||||||
[InlineData(2, 5, new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 })]
|
|
||||||
[InlineData(2, 3, new[] { 1, 2, 3, 4, 5 })]
|
|
||||||
[InlineData(2, 1, new[] { 1, 2 })]
|
|
||||||
[InlineData(1, 1, new[] { 1 })]
|
|
||||||
[InlineData(2, 2, new[] { 1, 2, 3 })]
|
|
||||||
public void Batch_Success(int batchSize, int totalBatches, int[] collection)
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var remainder = collection.Length % batchSize;
|
|
||||||
|
|
||||||
// Act
|
|
||||||
var batches = collection.Batch(batchSize);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
Assert.Equal(totalBatches, batches.Count());
|
|
||||||
|
|
||||||
foreach (var batch in batches.Take(totalBatches - 1))
|
|
||||||
{
|
|
||||||
Assert.Equal(batchSize, batch.Count());
|
|
||||||
}
|
|
||||||
|
|
||||||
Assert.Equal(batches.Last().Count(), remainder == 0 ? batchSize : remainder);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToGuidIdArrayTVP_Success()
|
public void ToGuidIdArrayTVP_Success()
|
||||||
|
Loading…
Reference in New Issue
Block a user