summaryrefslogtreecommitdiff
path: root/server/providers/services/chat_room.service.ts
diff options
context:
space:
mode:
authorLogan Hunt <loganhunt@simponic.xyz>2022-04-01 16:04:00 -0600
committerLogan Hunt <loganhunt@simponic.xyz>2022-04-01 16:04:00 -0600
commitdbb9eea25f80e7984a112409863be5191af5bf5e (patch)
treecca24e23afc5e7bb4b92a0582aaec48f6a08af72 /server/providers/services/chat_room.service.ts
parent1108970a6aeb98a2f113383c6437dd4d862dae10 (diff)
downloadlocchat-dbb9eea25f80e7984a112409863be5191af5bf5e.tar.gz
locchat-dbb9eea25f80e7984a112409863be5191af5bf5e.zip
Added way too much stuff
Diffstat (limited to 'server/providers/services/chat_room.service.ts')
-rw-r--r--server/providers/services/chat_room.service.ts44
1 files changed, 44 insertions, 0 deletions
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<ChatRoom>,
+ @InjectRepository(ChatRoomConnection)
+ private connectedUsersRepository: Repository<ChatRoomConnection>,
) {}
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);
}