import GeneralUtils from '../../utils/general' import { logger } from '../../utils/logger' import * as SendBirdUtils from '../../utils/sendbird' import { prismaClient as prisma } from '../../prismaClient' export default async function updateUserNicknameToHaveUnitNumberInIt() { console.time( 'Verifying all SendBird users to make sure their nicknames have their own unit number in it' ) try { await new Promise((resolve, reject) => { function startUpdatingUsers({ next = null }) { SendBirdUtils.getUsers({ limit: 100, token: next }) .then(async ({ users, next }) => { try { await Promise.all( users.map(async (sendBirdUser) => { const prismaUser = await prisma.user.findOne({ where: { id: sendBirdUser.user_id }, include: { avatar: true }, }) if (prismaUser && prismaUser.role === 'RESIDENT') { const newNickname = GeneralUtils.getUserName(prismaUser) if (sendBirdUser.nickname !== newNickname) { logger.info(`New nickname: ${newNickname}`) await SendBirdUtils.updateUser({ userId: sendBirdUser.user_id, nickname: newNickname, profileUrl: prismaUser.avatar?.url || '', }) } } return Promise.resolve() }) ) if (next) { return startUpdatingUsers({ next }) } return resolve() } catch (error) { reject(error) } }) .catch(console.error) } // START startUpdatingUsers({}) }) } catch (error) { logger.error(error) } console.timeEnd( 'Verifying all SendBird users to make sure their nicknames have their own unit number in it' ) } updateUserNicknameToHaveUnitNumberInIt()