1
0
mirror of https://github.com/bitwarden/server synced 2026-01-05 18:13:31 +00:00

log events to various organization indexes as well

This commit is contained in:
Kyle Spearrin
2017-12-01 12:14:46 -05:00
parent d94c2a8f50
commit 0662fc2163
8 changed files with 75 additions and 22 deletions

View File

@@ -54,30 +54,47 @@ namespace Bit.Core.Repositories.TableStorage
await Table.ExecuteAsync(TableOperation.Insert(entity));
}
public async Task CreateManyAsync(IEnumerable<ITableEntity> entities)
public async Task CreateManyAsync(IList<ITableEntity> entities)
{
if(!entities?.Any() ?? true)
{
return;
}
// A batch insert can only contain 100 entities at a time
var iterations = entities.Count() / 100;
for(var i = 0; i <= iterations; i++)
if(entities.Count == 1)
{
var batch = new TableBatchOperation();
var batchEntities = entities.Skip(i * 100).Take(100);
if(!batchEntities.Any())
await CreateAsync(entities.First());
return;
}
var entityGroups = entities.GroupBy(e => e.PartitionKey);
foreach(var group in entityGroups)
{
var groupEntities = group.ToList();
if(groupEntities.Count == 1)
{
break;
await CreateAsync(groupEntities.First());
continue;
}
foreach(var entity in batchEntities)
// A batch insert can only contain 100 entities at a time
var iterations = groupEntities.Count / 100;
for(var i = 0; i <= iterations; i++)
{
batch.InsertOrReplace(entity);
}
var batch = new TableBatchOperation();
var batchEntities = groupEntities.Skip(i * 100).Take(100);
if(!batchEntities.Any())
{
break;
}
await Table.ExecuteBatchAsync(batch);
foreach(var entity in batchEntities)
{
batch.InsertOrReplace(entity);
}
await Table.ExecuteBatchAsync(batch);
}
}
}
}