using Bit.Seeder.Data.Enums;
namespace Bit.Seeder.Data.Distributions;
///
/// Pre-configured username category distributions for seeding scenarios.
/// Pass to CipherUsernameGenerator for different username mixes.
///
public static class UsernameDistributions
{
///
/// Realistic enterprise mix with variety.
/// 45% Corporate email, varied personal/legacy/social.
///
public static Distribution Realistic { get; } = new(
(UsernameCategory.CorporateEmail, 0.45),
(UsernameCategory.PersonalEmail, 0.15),
(UsernameCategory.SocialHandle, 0.10),
(UsernameCategory.UsernameOnly, 0.10),
(UsernameCategory.EmployeeId, 0.08),
(UsernameCategory.PhoneNumber, 0.05),
(UsernameCategory.LegacySystem, 0.04),
(UsernameCategory.RandomAlphanumeric, 0.03)
);
///
/// Corporate-only: 100% corporate email format.
/// Use for strict enterprise environments.
///
public static Distribution CorporateOnly { get; } = new(
(UsernameCategory.CorporateEmail, 1.0)
);
///
/// Consumer-focused: personal emails and social handles.
/// Use for B2C application testing.
///
public static Distribution Consumer { get; } = new(
(UsernameCategory.PersonalEmail, 0.40),
(UsernameCategory.SocialHandle, 0.25),
(UsernameCategory.UsernameOnly, 0.20),
(UsernameCategory.PhoneNumber, 0.15)
);
///
/// Legacy enterprise: older systems with employee IDs.
/// Use for testing migrations from legacy systems.
///
public static Distribution LegacyEnterprise { get; } = new(
(UsernameCategory.CorporateEmail, 0.30),
(UsernameCategory.EmployeeId, 0.30),
(UsernameCategory.LegacySystem, 0.25),
(UsernameCategory.RandomAlphanumeric, 0.15)
);
///
/// Developer-focused: mix of corporate and technical identifiers.
///
public static Distribution Developer { get; } = new(
(UsernameCategory.CorporateEmail, 0.35),
(UsernameCategory.UsernameOnly, 0.25),
(UsernameCategory.SocialHandle, 0.20),
(UsernameCategory.RandomAlphanumeric, 0.20)
);
}