namespace ShareGuard.Web.DbModels; public class Link { private static readonly string _tokenChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; private static readonly Random _random = new(); public int Id { get; set; } public string Token { get; set; } public string Name { get; set; } public string IpAddress { get; set; } public string? PeerPublicKey { get; set; } public static string GenerateToken(Database database) { var token = ""; while (token == "" || database.Links.Any(link => link.Token == token)) { token = ""; for (var i = 0; i < 10; i++) token += _tokenChars[_random.Next(_tokenChars.Length)]; } return token; } }