Sequencialize upserts
This commit is contained in:
parent
1f90ea6cca
commit
26bcb56626
|
@ -10,6 +10,7 @@ import jwt from 'jsonwebtoken'
|
||||||
import { pubsub, AUTH_UPDATED } from '../pubsub'
|
import { pubsub, AUTH_UPDATED } from '../pubsub'
|
||||||
import { logError, logInfo, logSuccess, logWarning } from '../lib/logger'
|
import { logError, logInfo, logSuccess, logWarning } from '../lib/logger'
|
||||||
|
|
||||||
|
import { performance } from 'perf_hooks'
|
||||||
class User {
|
class User {
|
||||||
constructor(username) {
|
constructor(username) {
|
||||||
this.username = username
|
this.username = username
|
||||||
|
@ -378,21 +379,36 @@ class User {
|
||||||
message: 'Importando usuários para o Banco de Dados local'
|
message: 'Importando usuários para o Banco de Dados local'
|
||||||
})
|
})
|
||||||
|
|
||||||
await Promise.all(
|
const startTime = performance.now()
|
||||||
allAdUsers.map(async user =>
|
|
||||||
prisma.user.upsert({
|
// Do not promise.all, because it freezes the app
|
||||||
|
for (const [index, user] of allAdUsers.entries()) {
|
||||||
|
const dbUser = await prisma.user.upsert({
|
||||||
where: {
|
where: {
|
||||||
sAMAccountName: user.sAMAccountName
|
sAMAccountName: user.sAMAccountName
|
||||||
},
|
},
|
||||||
update: user,
|
update: user,
|
||||||
create: user
|
create: user
|
||||||
})
|
})
|
||||||
)
|
|
||||||
)
|
logSuccess({
|
||||||
|
message: `Importado ${index + 1}/${allAdUsers.length} (${
|
||||||
|
user.sAMAccountName
|
||||||
|
}) ${user.displayName}`,
|
||||||
|
data: dbUser
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const endTime = performance.now()
|
||||||
|
|
||||||
logSuccess({
|
logSuccess({
|
||||||
tags: ['user', 'AD'],
|
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
|
return allAdUsers.length
|
||||||
|
|
Loading…
Reference in New Issue
Block a user