full room object for create room mutation

This commit is contained in:
Moriz Wahl 2023-07-14 12:21:40 +02:00
parent 1d92b40f50
commit 2fe93892a1
4 changed files with 59 additions and 11 deletions

View File

@ -6,6 +6,16 @@ export const createRoomMutation = () => {
CreateRoom(userId: $userId) {
id
roomId
roomName
lastMessageAt
users {
_id
id
name
avatar {
url
}
}
}
}
`

View File

@ -1,16 +1,26 @@
import { isArray } from 'lodash'
const setRoomProps = (room) => {
if (room.users) {
room.users.forEach((user) => {
user._id = user.id
})
}
if (room.lastMessage) {
room.lastMessage._id = room.lastMessage.id
}
}
const roomProperties = async (resolve, root, args, context, info) => {
const resolved = await resolve(root, args, context, info)
if (resolved) {
resolved.forEach((room) => {
if (room.users) {
room.users.forEach((user) => {
user._id = user.id
})
}
if (room.lastMessage) {
room.lastMessage._id = room.lastMessage.id
}
})
if (isArray(resolved)) {
resolved.forEach((room) => {
setRoomProps(room)
})
} else {
setRoomProps(resolved)
}
}
return resolved
}
@ -19,4 +29,7 @@ export default {
Query: {
Room: roomProperties,
},
Mutation: {
CreateRoom: roomProperties,
},
}

View File

@ -125,6 +125,25 @@ describe('Room', () => {
CreateRoom: {
id: expect.any(String),
roomId: result.data.CreateRoom.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),
},
},
]),
},
},
})

View File

@ -29,7 +29,13 @@ export default {
ON CREATE SET
room.createdAt = toString(datetime()),
room.id = apoc.create.uuid()
RETURN room { .* }
WITH room, user, currentUser,
user.name AS roomName
RETURN room {
.*,
users: [properties(currentUser), properties(user)],
roomName: roomName
}
`
const createRommTxResponse = await transaction.run(createRoomCypher, {
userId,