diff --git a/backend/src/graphql/rooms.ts b/backend/src/graphql/rooms.ts index 38d10a1d8..1c2120fb0 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,8 +20,15 @@ export const roomQuery = () => { query { Room { id + roomId + roomName 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 8c4d887cb..945facd05 100644 --- a/backend/src/schema/resolvers/rooms.spec.ts +++ b/backend/src/schema/resolvers/rooms.spec.ts @@ -102,11 +102,12 @@ describe('Room', () => { }, }) roomId = result.data.CreateRoom.id - await expect(result).toMatchObject({ + expect(result).toMatchObject({ errors: undefined, data: { CreateRoom: { id: expect.any(String), + roomId: result.data.CreateRoom.id, }, }, }) @@ -153,18 +154,31 @@ 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, + roomName: 'Other Chatting User', users: expect.arrayContaining([ { + _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), + }, }, ]), }, @@ -180,18 +194,31 @@ 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, + roomName: 'Chatting User', users: expect.arrayContaining([ { + _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), + }, }, ]), }, diff --git a/backend/src/schema/resolvers/rooms.ts b/backend/src/schema/resolvers/rooms.ts index f3ea05cc9..bf0e6b8a6 100644 --- a/backend/src/schema/resolvers/rooms.ts +++ b/backend/src/schema/resolvers/rooms.ts @@ -8,7 +8,18 @@ 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.roomName = room.users.filter((user) => user.id !== context.user.id)[0].name + room.users.forEach((user) => { + user._id = user.id + }) + } + }) + } + return resolved }, }, Mutation: { @@ -37,6 +48,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 8792aa56a..c90ebda3a 100644 --- a/backend/src/schema/types/type/Room.gql +++ b/backend/src/schema/types/type/Room.gql @@ -10,7 +10,10 @@ 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") + roomName: String! ## @cypher(statement: "MATCH (this)<-[:CHATS_IN]-(user:User) WHERE NOT user.id = $cypherParams.currentUserId RETURN user[0].name") } type Mutation {