From 5d4c4f3c98755f87b3724cc915d82d28b63d80c6 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Fri, 16 Jun 2023 09:08:31 +0200 Subject: [PATCH 1/5] roomId property --- backend/src/graphql/rooms.ts | 2 ++ backend/src/schema/resolvers/rooms.spec.ts | 14 ++++++++++---- backend/src/schema/resolvers/rooms.ts | 3 +++ backend/src/schema/types/type/Room.gql | 4 +++- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/backend/src/graphql/rooms.ts b/backend/src/graphql/rooms.ts index 38d10a1d8..f06313228 100644 --- a/backend/src/graphql/rooms.ts +++ b/backend/src/graphql/rooms.ts @@ -9,6 +9,7 @@ export const createRoomMutation = () => { userId: $userId ) { id + roomId } } ` @@ -19,6 +20,7 @@ export const roomQuery = () => { query { Room { id + roomId users { id } diff --git a/backend/src/schema/resolvers/rooms.spec.ts b/backend/src/schema/resolvers/rooms.spec.ts index 26c95920b..be999db83 100644 --- a/backend/src/schema/resolvers/rooms.spec.ts +++ b/backend/src/schema/resolvers/rooms.spec.ts @@ -93,16 +93,18 @@ describe('Room', () => { describe('user id exists', () => { it('returns the id of the room', async () => { - await expect(mutate({ + const result = await mutate({ mutation: createRoomMutation(), variables: { userId: 'other-chatting-user', }, - })).resolves.toMatchObject({ + }) + expect(result).toMatchObject({ errors: undefined, data: { CreateRoom: { id: expect.any(String), + roomId: result.data.CreateRoom.id, }, }, }) @@ -131,12 +133,14 @@ describe('Room', () => { }) it('returns the room', async () => { - await expect(query({ query: roomQuery() })).resolves.toMatchObject({ + const result = await query({ query: roomQuery() }) + expect(result).toMatchObject({ errors: undefined, data: { Room: [ { id: expect.any(String), + roomId: result.data.Room[0].id, users: expect.arrayContaining([ { id: 'chatting-user', @@ -158,12 +162,14 @@ describe('Room', () => { }) it('returns the room', async () => { - await expect(query({ query: roomQuery() })).resolves.toMatchObject({ + const result = await query({ query: roomQuery() }) + expect(result).toMatchObject({ errors: undefined, data: { Room: [ { id: expect.any(String), + roomId: result.data.Room[0].id, users: expect.arrayContaining([ { id: 'chatting-user', diff --git a/backend/src/schema/resolvers/rooms.ts b/backend/src/schema/resolvers/rooms.ts index fe3779293..9080a87ed 100644 --- a/backend/src/schema/resolvers/rooms.ts +++ b/backend/src/schema/resolvers/rooms.ts @@ -38,6 +38,9 @@ export default { }) try { const room = await writeTxResultPromise + if (room) { + room.roomId = room.id + } return room } catch (error) { throw new Error(error) diff --git a/backend/src/schema/types/type/Room.gql b/backend/src/schema/types/type/Room.gql index c228c3a74..854d85078 100644 --- a/backend/src/schema/types/type/Room.gql +++ b/backend/src/schema/types/type/Room.gql @@ -10,7 +10,9 @@ type Room { createdAt: String updatedAt: String - users: [User]! @relation(name: "CHATS_IN", direction: "IN") + users: [User]! @relation(name: "CHATS_IN", direction: "IN") + + roomId: String! @cypher(statement: "RETURN this.id") } type Mutation { From 64120a00097e0ed490f4df7c6cb3898c45709016 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Fri, 16 Jun 2023 09:13:29 +0200 Subject: [PATCH 2/5] _id property for user --- backend/src/graphql/rooms.ts | 1 + backend/src/schema/resolvers/rooms.spec.ts | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/backend/src/graphql/rooms.ts b/backend/src/graphql/rooms.ts index f06313228..14ce4edc7 100644 --- a/backend/src/graphql/rooms.ts +++ b/backend/src/graphql/rooms.ts @@ -22,6 +22,7 @@ export const roomQuery = () => { id roomId users { + _id id } } diff --git a/backend/src/schema/resolvers/rooms.spec.ts b/backend/src/schema/resolvers/rooms.spec.ts index be999db83..0f324b27b 100644 --- a/backend/src/schema/resolvers/rooms.spec.ts +++ b/backend/src/schema/resolvers/rooms.spec.ts @@ -143,9 +143,11 @@ describe('Room', () => { roomId: result.data.Room[0].id, users: expect.arrayContaining([ { + _id: expect.any(String), id: 'chatting-user', }, { + _id: expect.any(String), id: 'other-chatting-user', }, ]), @@ -172,9 +174,11 @@ describe('Room', () => { roomId: result.data.Room[0].id, users: expect.arrayContaining([ { + _id: expect.any(String), id: 'chatting-user', }, { + _id: expect.any(String), id: 'other-chatting-user', }, ]), From 6a6efd5a23e89f2cee9f36619ae87988ec265b6a Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Fri, 16 Jun 2023 12:38:13 +0200 Subject: [PATCH 3/5] override user._id with user.id to not expose internal db id --- backend/src/schema/resolvers/rooms.spec.ts | 8 ++++---- backend/src/schema/resolvers/rooms.ts | 12 +++++++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/backend/src/schema/resolvers/rooms.spec.ts b/backend/src/schema/resolvers/rooms.spec.ts index 0f324b27b..8b5e87fd1 100644 --- a/backend/src/schema/resolvers/rooms.spec.ts +++ b/backend/src/schema/resolvers/rooms.spec.ts @@ -143,11 +143,11 @@ describe('Room', () => { roomId: result.data.Room[0].id, users: expect.arrayContaining([ { - _id: expect.any(String), + _id: 'chatting-user', id: 'chatting-user', }, { - _id: expect.any(String), + _id: 'other-chatting-user', id: 'other-chatting-user', }, ]), @@ -174,11 +174,11 @@ describe('Room', () => { roomId: result.data.Room[0].id, users: expect.arrayContaining([ { - _id: expect.any(String), + _id: 'chatting-user', id: 'chatting-user', }, { - _id: expect.any(String), + _id: 'other-chatting-user', id: 'other-chatting-user', }, ]), diff --git a/backend/src/schema/resolvers/rooms.ts b/backend/src/schema/resolvers/rooms.ts index 9080a87ed..aa165b35f 100644 --- a/backend/src/schema/resolvers/rooms.ts +++ b/backend/src/schema/resolvers/rooms.ts @@ -9,7 +9,17 @@ export default { params.filter.users_some = { id: context.user.id, } - return neo4jgraphql(object, params, context, resolveInfo) + const resolved = await neo4jgraphql(object, params, context, resolveInfo) + if (resolved) { + resolved.forEach((room) => { + if (room.users) { + room.users.forEach((user) => { + user._id = user.id + }) + } + }) + } + return resolved }, }, Mutation: { From cd23b88dd6cb5bb552f6d4c29366a121f5b73019 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Fri, 16 Jun 2023 12:53:48 +0200 Subject: [PATCH 4/5] room users complete --- backend/src/graphql/rooms.ts | 4 ++++ backend/src/schema/resolvers/rooms.spec.ts | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/backend/src/graphql/rooms.ts b/backend/src/graphql/rooms.ts index 14ce4edc7..1b03f8876 100644 --- a/backend/src/graphql/rooms.ts +++ b/backend/src/graphql/rooms.ts @@ -24,6 +24,10 @@ export const roomQuery = () => { users { _id id + name + avatar { + url + } } } } diff --git a/backend/src/schema/resolvers/rooms.spec.ts b/backend/src/schema/resolvers/rooms.spec.ts index 8b5e87fd1..732523a73 100644 --- a/backend/src/schema/resolvers/rooms.spec.ts +++ b/backend/src/schema/resolvers/rooms.spec.ts @@ -145,10 +145,18 @@ describe('Room', () => { { _id: 'chatting-user', id: 'chatting-user', + name: 'Chatting User', + avatar: { + url: expect.any(String), + }, }, { _id: 'other-chatting-user', id: 'other-chatting-user', + name: 'Other Chatting User', + avatar: { + url: expect.any(String), + }, }, ]), }, @@ -176,10 +184,18 @@ describe('Room', () => { { _id: 'chatting-user', id: 'chatting-user', + name: 'Chatting User', + avatar: { + url: expect.any(String), + }, }, { _id: 'other-chatting-user', id: 'other-chatting-user', + name: 'Other Chatting User', + avatar: { + url: expect.any(String), + }, }, ]), }, From c68339fedf878d442c8c7ae7d0afccf77ae178d8 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Fri, 16 Jun 2023 13:07:10 +0200 Subject: [PATCH 5/5] roomName property --- backend/src/graphql/rooms.ts | 1 + backend/src/schema/resolvers/rooms.spec.ts | 2 ++ backend/src/schema/resolvers/rooms.ts | 1 + backend/src/schema/types/type/Room.gql | 1 + 4 files changed, 5 insertions(+) diff --git a/backend/src/graphql/rooms.ts b/backend/src/graphql/rooms.ts index 1b03f8876..1c2120fb0 100644 --- a/backend/src/graphql/rooms.ts +++ b/backend/src/graphql/rooms.ts @@ -21,6 +21,7 @@ export const roomQuery = () => { Room { id roomId + roomName users { _id id diff --git a/backend/src/schema/resolvers/rooms.spec.ts b/backend/src/schema/resolvers/rooms.spec.ts index 732523a73..dd996f4f4 100644 --- a/backend/src/schema/resolvers/rooms.spec.ts +++ b/backend/src/schema/resolvers/rooms.spec.ts @@ -141,6 +141,7 @@ describe('Room', () => { { id: expect.any(String), roomId: result.data.Room[0].id, + roomName: 'Other Chatting User', users: expect.arrayContaining([ { _id: 'chatting-user', @@ -180,6 +181,7 @@ describe('Room', () => { { id: expect.any(String), roomId: result.data.Room[0].id, + roomName: 'Chatting User', users: expect.arrayContaining([ { _id: 'chatting-user', diff --git a/backend/src/schema/resolvers/rooms.ts b/backend/src/schema/resolvers/rooms.ts index aa165b35f..d8aaff2ce 100644 --- a/backend/src/schema/resolvers/rooms.ts +++ b/backend/src/schema/resolvers/rooms.ts @@ -13,6 +13,7 @@ export default { if (resolved) { resolved.forEach((room) => { if (room.users) { + room.roomName = room.users.filter((user) => user.id !== context.user.id)[0].name room.users.forEach((user) => { user._id = user.id }) diff --git a/backend/src/schema/types/type/Room.gql b/backend/src/schema/types/type/Room.gql index 854d85078..f93b395c8 100644 --- a/backend/src/schema/types/type/Room.gql +++ b/backend/src/schema/types/type/Room.gql @@ -13,6 +13,7 @@ type Room { users: [User]! @relation(name: "CHATS_IN", direction: "IN") roomId: String! @cypher(statement: "RETURN this.id") + roomName: String! ## @cypher(statement: "MATCH (this)<-[:CHATS_IN]-(user:User) WHERE NOT user.id = $cypherParams.currentUserId RETURN user[0].name") } type Mutation {