1
0
mirror of https://github.com/bitwarden/server synced 2026-02-20 19:33:32 +00:00
Files
server/util/Seeder/Steps/GenerateFoldersStep.cs
Mick Letofsky 10044397c1 Implement plan types, personal ciphers and fix folder assignment (#7030)
* Implement plan types, personal ciphers and fix folder assignment
2026-02-19 15:47:37 +01:00

39 lines
1.3 KiB
C#

using Bit.Seeder.Data.Distributions;
using Bit.Seeder.Factories;
using Bit.Seeder.Pipeline;
namespace Bit.Seeder.Steps;
/// <summary>
/// Generates folders for each user based on a realistic distribution, encrypted with each user's symmetric key.
/// </summary>
internal sealed class GenerateFoldersStep : IStep
{
public void Execute(SeederContext context)
{
var generator = context.RequireGenerator();
var userDigests = context.Registry.UserDigests;
var distribution = FolderCountDistributions.Realistic;
for (var index = 0; index < userDigests.Count; index++)
{
var digest = userDigests[index];
var range = distribution.Select(index, userDigests.Count);
var count = range.Min + (index % Math.Max(range.Max - range.Min, 1));
var folderIds = new List<Guid>(count);
for (var i = 0; i < count; i++)
{
var folder = FolderSeeder.Create(
digest.UserId,
digest.SymmetricKey,
generator.Folder.GetFolderName(i));
context.Folders.Add(folder);
folderIds.Add(folder.Id);
}
context.Registry.UserFolderIds[digest.UserId] = folderIds;
}
}
}