From dbb9eea25f80e7984a112409863be5191af5bf5e Mon Sep 17 00:00:00 2001 From: Logan Hunt Date: Fri, 1 Apr 2022 16:04:00 -0600 Subject: Added way too much stuff --- server/providers/services/chat_room.service.ts | 44 ++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'server/providers/services/chat_room.service.ts') diff --git a/server/providers/services/chat_room.service.ts b/server/providers/services/chat_room.service.ts index 6d804e6..148ff19 100644 --- a/server/providers/services/chat_room.service.ts +++ b/server/providers/services/chat_room.service.ts @@ -2,12 +2,16 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { ChatRoom } from 'server/entities/chat_room.entity'; +import { User } from 'server/entities/user.entity'; +import { ChatRoomConnection } from 'server/entities/chat_room_connection.entity'; @Injectable() export class ChatRoomService { constructor( @InjectRepository(ChatRoom) private chatRoomRepository: Repository, + @InjectRepository(ChatRoomConnection) + private connectedUsersRepository: Repository, ) {} create(chatRoom: ChatRoom) { @@ -29,6 +33,46 @@ export class ChatRoomService { return this.chatRoomRepository.findOne(id, { relations }); } + async connectedUsers(chatRoom: ChatRoom) { + return this.connectedUsersRepository + .find({ + where: { chatRoom }, + relations: ['user'], + }) + .then((x) => + x.map((x) => { + return { + id: x.user.id, + userName: `${x.user.firstName} ${x.user.lastName}`, + }; + }), + ); + } + + connectUser = async function (chatRoom: ChatRoom, user: User) { + const connectedUser = await this.connectedUsersRepository.findOne({ + where: { chatRoom, user }, + }); + if (connectedUser) { + return connectedUser; + } + const chatRoomConnection = new ChatRoomConnection(); + chatRoomConnection.chatRoom = chatRoom; + chatRoomConnection.user = user; + await this.connectedUsersRepository.save(chatRoomConnection); + return this.connectedUsers(chatRoom); + }; + + disconnectUser = async function (chatRoom: ChatRoom, user: User) { + const connectedUser = await this.connectedUsersRepository.findOne({ + where: { chatRoom, user }, + }); + if (connectedUser) { + return this.connectedUsersRepository.remove(connectedUser); + } + return false; + }; + save(chatRoom: ChatRoom) { return this.chatRoomRepository.save(chatRoom); } -- cgit v1.2.3-70-g09d2