1
0
mirror of https://github.com/bitwarden/server synced 2026-02-18 10:23:27 +00:00
Files
server/util/Seeder/Steps/CreateGroupsStep.cs
2026-02-17 07:42:53 +01:00

40 lines
1.2 KiB
C#

using Bit.Core.AdminConsole.Entities;
using Bit.Seeder.Factories;
using Bit.Seeder.Pipeline;
namespace Bit.Seeder.Steps;
internal sealed class CreateGroupsStep(int count) : IStep
{
public void Execute(SeederContext context)
{
var orgId = context.RequireOrgId();
var hardenedOrgUserIds = context.Registry.HardenedOrgUserIds;
var groups = new List<Group>(count);
var groupIds = new List<Guid>(count);
var groupUsers = new List<GroupUser>();
for (var i = 0; i < count; i++)
{
var group = GroupSeeder.Create(orgId, $"Group {i + 1}");
groups.Add(group);
groupIds.Add(group.Id);
}
// Round-robin user assignment
if (groups.Count > 0 && hardenedOrgUserIds.Count > 0)
{
for (var i = 0; i < hardenedOrgUserIds.Count; i++)
{
var groupId = groupIds[i % groups.Count];
groupUsers.Add(GroupUserSeeder.Create(groupId, hardenedOrgUserIds[i]));
}
}
context.Groups.AddRange(groups);
context.Registry.GroupIds.AddRange(groupIds);
context.GroupUsers.AddRange(groupUsers);
}
}