mirror of
https://gitlab.com/PronounsPage/PronounsPage.git
synced 2025-09-26 06:23:35 -04:00
[perf] optimise defaultUsername
This commit is contained in:
parent
d5724bdfcc
commit
29cf160270
@ -65,16 +65,20 @@ const invalidateAuthenticator = async (db, id) => {
|
||||
}
|
||||
|
||||
const defaultUsername = async (db, email) => {
|
||||
const base = email.substring(0, email.includes('@') ? email.indexOf('@') : email.length)
|
||||
.padEnd(4, '0')
|
||||
.substring(0, 14)
|
||||
.replace(new RegExp(`[^${USERNAME_CHARS}]`, 'g'), '_');
|
||||
const base = normalise(
|
||||
email.substring(0, email.includes('@') ? email.indexOf('@') : email.length)
|
||||
.padEnd(4, '0')
|
||||
.substring(0, 14)
|
||||
.replace(new RegExp(`[^${USERNAME_CHARS}]`, 'g'), '_')
|
||||
);
|
||||
|
||||
const conflicts = (await db.all(SQL`SELECT usernameNorm FROM users WHERE usernameNorm LIKE ${normalise(base) + '%'}`))
|
||||
.map(({usernameNorm}) => usernameNorm);
|
||||
|
||||
let c = 0;
|
||||
while (true) {
|
||||
let proposal = base + (c || '');
|
||||
let dbUser = await db.get(SQL`SELECT id FROM users WHERE usernameNorm = ${normalise(proposal)}`);
|
||||
if (!dbUser) {
|
||||
if (!conflicts.includes(proposal)) {
|
||||
return proposal;
|
||||
}
|
||||
c++;
|
||||
|
Loading…
x
Reference in New Issue
Block a user