mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
backend implementation for message pagination
This commit is contained in:
parent
481158f815
commit
0cce43500a
@ -13,11 +13,32 @@ export default {
|
|||||||
id: context.user.id,
|
id: context.user.id,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
// this does not work
|
||||||
|
// params.orderBy = ['createdAt_desc']
|
||||||
const resolved = await neo4jgraphql(object, params, context, resolveInfo)
|
const resolved = await neo4jgraphql(object, params, context, resolveInfo)
|
||||||
|
|
||||||
if (resolved) {
|
if (resolved) {
|
||||||
resolved.forEach((message) => {
|
const session = context.driver.session()
|
||||||
message._id = message.id
|
const countMessageTxPromise = session.readTransaction(async (transaction) => {
|
||||||
|
const countMessageCypher = `
|
||||||
|
MATCH((message:Message)-[:INSIDE]->(:Room { id: $roomId })) RETURN COUNT(message) AS count
|
||||||
|
`
|
||||||
|
const countMessageTxResponse = await transaction.run(countMessageCypher, {
|
||||||
|
roomId,
|
||||||
|
})
|
||||||
|
return await countMessageTxResponse.records[0].get('count')
|
||||||
})
|
})
|
||||||
|
try {
|
||||||
|
const count = await countMessageTxPromise
|
||||||
|
for (let i = 0; i < resolved.length; i++) {
|
||||||
|
resolved[i]._id = resolved[i].id
|
||||||
|
resolved[i].indexId = count - 1 - params.offset - i
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
throw new Error(error)
|
||||||
|
} finally {
|
||||||
|
session.close()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return resolved
|
return resolved
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user