import { ManagingCompany } from 'nexus-plugin-prisma/client' import * as SendBirdController from '../../controllers/sendbird' import * as SendBirdUtils from '../../utils/sendbird' import { prismaClient as prisma } from '../../prismaClient' prisma.managingCompany.findMany().then(async (managingCompanies: ManagingCompany[]) => { for await (const managingCompany of managingCompanies) { console.log(`Start processing ${managingCompany.shortName}`) const usersForManagingCompany = await prisma.user.findMany({ where: { managingCompany: { id: managingCompany.id } }, }) const channels = await SendBirdController.getChannelsForUserId({ all: true, userId: managingCompany.id, show_member: true, }) console.log('channels.length', channels.length) const v2PublicChannels = channels.filter((c) => !c.name.startsWith('chat')) console.log('v2PublicChannels.length', v2PublicChannels.length) for await (const channel of v2PublicChannels) { const privateChannel = await SendBirdController.getChannelByName({ name: `${channel.name}-private`, }) await Promise.all([ SendBirdUtils.addOperatorsToChannel({ channelUrl: privateChannel.channel_url, operatorIds: usersForManagingCompany.map((u) => u.id), }), SendBirdUtils.addOperatorsToChannel({ channelUrl: channel.channel_url, operatorIds: [managingCompany.id], }), ]) console.log('Done adding users as operators channel') } console.log('Done processing managing comapny') } })