summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-06-04 10:40:07 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-06-04 10:40:07 -0400
commit6fe335f843d6726cf43075d8014a16644afb34e2 (patch)
tree1aef6a75790464e4afc04144c642df2ec16f340d /packages/backend/src/server/api
parentmerge: Rework queries and add indexes to improve timeline performance (!1091) (diff)
downloadsharkey-6fe335f843d6726cf43075d8014a16644afb34e2.tar.gz
sharkey-6fe335f843d6726cf43075d8014a16644afb34e2.tar.bz2
sharkey-6fe335f843d6726cf43075d8014a16644afb34e2.zip
fix performance drop in notes/mentions endpoint
Diffstat (limited to 'packages/backend/src/server/api')
-rw-r--r--packages/backend/src/server/api/endpoints/notes/mentions.ts9
1 files changed, 5 insertions, 4 deletions
diff --git a/packages/backend/src/server/api/endpoints/notes/mentions.ts b/packages/backend/src/server/api/endpoints/notes/mentions.ts
index 7c54bc69ab..4a3454c36f 100644
--- a/packages/backend/src/server/api/endpoints/notes/mentions.ts
+++ b/packages/backend/src/server/api/endpoints/notes/mentions.ts
@@ -64,9 +64,9 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'),
ps.sinceId, ps.untilId)
.andWhere(new Brackets(qb => qb
- .orWhere(':meId = ANY (note.mentions)')
- .orWhere(':meId = ANY (note.visibleUserIds)')))
- .setParameters({ meId: me.id })
+ .where(':meIdAsList <@ note.mentions')
+ .orWhere(':meIdAsList <@ note.visibleUserIds')))
+ .setParameters({ meIdAsList: [me.id] })
// Avoid scanning primary key index
.orderBy('CONCAT(note.id)', 'DESC')
.innerJoinAndSelect('note.user', 'user')
@@ -80,7 +80,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
this.queryService.generateMutedUserQueryForNotes(query, me);
this.queryService.generateMutedNoteThreadQuery(query, me);
this.queryService.generateBlockedUserQueryForNotes(query, me);
- this.queryService.generateMutedUserRenotesQueryForNotes(query, me);
+ // A renote can't mention a user, so it will never appear here anyway.
+ //this.queryService.generateMutedUserRenotesQueryForNotes(query, me);
if (ps.visibility) {
query.andWhere('note.visibility = :visibility', { visibility: ps.visibility });