import { DataSource } from 'typeorm'; import { RoomChannelPermissionEntity, RoomChannelEntity, RoomEntity, RoomMemberEntity, RoomRoleEntity, RoomUserRoleEntity, MessageEntity } from '../../../entities'; import { DeleteRoomCommand } from '../../types'; export async function handleDeleteRoom(command: DeleteRoomCommand, dataSource: DataSource): Promise { const { roomId } = command.payload; await dataSource.transaction(async (manager) => { await manager.getRepository(RoomChannelPermissionEntity).delete({ roomId }); await manager.getRepository(RoomChannelEntity).delete({ roomId }); await manager.getRepository(RoomMemberEntity).delete({ roomId }); await manager.getRepository(RoomRoleEntity).delete({ roomId }); await manager.getRepository(RoomUserRoleEntity).delete({ roomId }); await manager.getRepository(RoomEntity).delete({ id: roomId }); await manager.getRepository(MessageEntity).delete({ roomId }); }); }