summaryrefslogtreecommitdiff
path: root/packages/backend/src
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-05-28 02:03:05 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-06-04 10:45:21 -0400
commitb05ccbc3aca8e008555736f25760f9f2b1b2a5e7 (patch)
tree5033241e53cccf7a1c0659c1cf37f87e705e6d1b /packages/backend/src
parentadd relation from user->user_profile to speed up UserEntityService.pack and p... (diff)
downloadsharkey-b05ccbc3aca8e008555736f25760f9f2b1b2a5e7.tar.gz
sharkey-b05ccbc3aca8e008555736f25760f9f2b1b2a5e7.tar.bz2
sharkey-b05ccbc3aca8e008555736f25760f9f2b1b2a5e7.zip
add relations from abuse_user_report->user_profile to speed up admin/abuse-user-reports endpoint
Diffstat (limited to 'packages/backend/src')
-rw-r--r--packages/backend/src/models/AbuseUserReport.ts22
-rw-r--r--packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts10
2 files changed, 31 insertions, 1 deletions
diff --git a/packages/backend/src/models/AbuseUserReport.ts b/packages/backend/src/models/AbuseUserReport.ts
index 8f8d759004..c1a44c3d40 100644
--- a/packages/backend/src/models/AbuseUserReport.ts
+++ b/packages/backend/src/models/AbuseUserReport.ts
@@ -5,6 +5,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { MiInstance } from '@/models/Instance.js';
+import { MiUserProfile } from '@/models/UserProfile.js';
import { id } from './util/id.js';
import { MiUser } from './User.js';
@@ -25,6 +26,13 @@ export class MiAbuseUserReport {
@JoinColumn()
public targetUser: MiUser | null;
+ @ManyToOne(() => MiUserProfile, {
+ onDelete: 'CASCADE',
+ createForeignKeyConstraints: false,
+ })
+ @JoinColumn({ name: 'targetUserId', referencedColumnName: 'userId' })
+ public targetUserProfile: MiUserProfile | null;
+
@Index()
@Column(id())
public reporterId: MiUser['id'];
@@ -35,6 +43,13 @@ export class MiAbuseUserReport {
@JoinColumn()
public reporter: MiUser | null;
+ @ManyToOne(() => MiUserProfile, {
+ onDelete: 'CASCADE',
+ createForeignKeyConstraints: false,
+ })
+ @JoinColumn({ name: 'reporterId', referencedColumnName: 'userId' })
+ public reporterProfile: MiUserProfile | null;
+
@Column({
...id(),
nullable: true,
@@ -47,6 +62,13 @@ export class MiAbuseUserReport {
@JoinColumn()
public assignee: MiUser | null;
+ @ManyToOne(() => MiUserProfile, {
+ onDelete: 'CASCADE',
+ createForeignKeyConstraints: false,
+ })
+ @JoinColumn({ name: 'assigneeId', referencedColumnName: 'userId' })
+ public assigneeProfile: MiUserProfile | null;
+
@Index()
@Column('boolean', {
default: false,
diff --git a/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts b/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts
index f052d3dd14..f9aa3b7ae5 100644
--- a/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts
+++ b/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts
@@ -120,7 +120,15 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private queryService: QueryService,
) {
super(meta, paramDef, async (ps, me) => {
- const query = this.queryService.makePaginationQuery(this.abuseUserReportsRepository.createQueryBuilder('report'), ps.sinceId, ps.untilId);
+ const query = this.queryService.makePaginationQuery(this.abuseUserReportsRepository.createQueryBuilder('report'), ps.sinceId, ps.untilId)
+ .leftJoinAndSelect('report.targetUser', 'targetUser')
+ .leftJoinAndSelect('report.targetUserProfile', 'targetUserProfile')
+ .leftJoinAndSelect('report.targetUserInstance', 'targetUserInstance')
+ .leftJoinAndSelect('report.reporter', 'reporter')
+ .leftJoinAndSelect('report.reporterUserProfile', 'reporterUserProfile')
+ .leftJoinAndSelect('report.assignee', 'assignee')
+ .leftJoinAndSelect('report.assigneeUserProfile', 'assigneeUserProfile')
+ ;
switch (ps.state) {
case 'resolved': query.andWhere('report.resolved = TRUE'); break;