mirror of
https://github.com/bitwarden/server
synced 2025-12-25 20:53:16 +00:00
40 lines
1.5 KiB
C#
40 lines
1.5 KiB
C#
using Bit.Core.Entities;
|
|
using Bit.Core.Enums;
|
|
using Bit.Infrastructure.EntityFramework.Repositories;
|
|
using Bit.Seeder.Factories;
|
|
using LinqToDB.EntityFrameworkCore;
|
|
|
|
namespace Bit.Seeder.Recipes;
|
|
|
|
public class OrganizationWithUsersRecipe(DatabaseContext db)
|
|
{
|
|
public Guid Seed(string name, string domain, int users, OrganizationUserStatusType usersStatus = OrganizationUserStatusType.Confirmed)
|
|
{
|
|
var seats = Math.Max(users + 1, 1000);
|
|
var organization = OrganizationSeeder.CreateEnterprise(name, domain, seats);
|
|
var ownerUser = UserSeeder.CreateUserNoMangle($"owner@{domain}");
|
|
var ownerOrgUser = organization.CreateOrganizationUser(ownerUser, OrganizationUserType.Owner, OrganizationUserStatusType.Confirmed);
|
|
|
|
var additionalUsers = new List<User>();
|
|
var additionalOrgUsers = new List<OrganizationUser>();
|
|
for (var i = 0; i < users; i++)
|
|
{
|
|
var additionalUser = UserSeeder.CreateUserNoMangle($"user{i}@{domain}");
|
|
additionalUsers.Add(additionalUser);
|
|
additionalOrgUsers.Add(organization.CreateOrganizationUser(additionalUser, OrganizationUserType.User, usersStatus));
|
|
}
|
|
|
|
db.Add(organization);
|
|
db.Add(ownerUser);
|
|
db.Add(ownerOrgUser);
|
|
|
|
db.SaveChanges();
|
|
|
|
// Use LinqToDB's BulkCopy for significant better performance
|
|
db.BulkCopy(additionalUsers);
|
|
db.BulkCopy(additionalOrgUsers);
|
|
|
|
return organization.Id;
|
|
}
|
|
}
|