import { Brackets, SelectQueryBuilder } from 'typeorm'; import { User } from '@/models/entities/user.js'; import { RenoteMutings } from '@/models/index.js'; export function generateMutedRenotesQuery(q: SelectQueryBuilder, me: { id: User['id'] }): void { const mutingQuery = RenoteMutings.createQueryBuilder('renote_muting') .select('renote_muting.muteeId') .where('renote_muting.muterId = :muterId', { muterId: me.id }); q.andWhere(new Brackets(qb => { qb .where(new Brackets(qb => { qb.where('note.renoteId IS NOT NULL'); qb.andWhere('note.text IS NULL'); qb.andWhere(`note.userId NOT IN (${ mutingQuery.getQuery() })`); })) .orWhere('note.renoteId IS NULL') .orWhere('note.text IS NOT NULL'); })); q.setParameters(mutingQuery.getParameters()); }