diff --git a/server/src/classes/User.js b/server/src/classes/User.js index 36f07fe..59f89db 100755 --- a/server/src/classes/User.js +++ b/server/src/classes/User.js @@ -10,6 +10,7 @@ import jwt from 'jsonwebtoken' import { pubsub, AUTH_UPDATED } from '../pubsub' import { logError, logInfo, logSuccess, logWarning } from '../lib/logger' +import { performance } from 'perf_hooks' class User { constructor(username) { this.username = username @@ -378,21 +379,36 @@ class User { message: 'Importando usuários para o Banco de Dados local' }) - await Promise.all( - allAdUsers.map(async user => - prisma.user.upsert({ - where: { - sAMAccountName: user.sAMAccountName - }, - update: user, - create: user - }) - ) - ) + const startTime = performance.now() + + // Do not promise.all, because it freezes the app + for (const [index, user] of allAdUsers.entries()) { + const dbUser = await prisma.user.upsert({ + where: { + sAMAccountName: user.sAMAccountName + }, + update: user, + create: user + }) + + logSuccess({ + message: `Importado ${index + 1}/${allAdUsers.length} (${ + user.sAMAccountName + }) ${user.displayName}`, + data: dbUser + }) + } + + const endTime = performance.now() logSuccess({ tags: ['user', 'AD'], - message: `${allAdUsers.length} usuários importados do Active Directory` + message: `${ + allAdUsers.length + } usuários importados do Active Directory em ${( + (endTime - startTime) / + 1000 + ).toFixed(2)}s` }) return allAdUsers.length