9855405b89
* wip * wip * wip * wip * wip * wip * wip * wip * wop * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * add notes * wip * wip * wip * wip * sound * wip * add kick_gaba2 * wip
25 lines
920 B
TypeScript
25 lines
920 B
TypeScript
import { User } from '../../../models/entities/user';
|
|
import { ChannelFollowings } from '../../../models';
|
|
import { Brackets, SelectQueryBuilder } from 'typeorm';
|
|
|
|
export function generateChannelQuery(q: SelectQueryBuilder<any>, me?: User | null) {
|
|
if (me == null) {
|
|
q.andWhere('note.channelId IS NULL');
|
|
} else {
|
|
q.leftJoinAndSelect('note.channel', 'channel');
|
|
|
|
const channelFollowingQuery = ChannelFollowings.createQueryBuilder('channelFollowing')
|
|
.select('channelFollowing.followeeId')
|
|
.where('channelFollowing.followerId = :followerId', { followerId: me.id });
|
|
|
|
q.andWhere(new Brackets(qb => { qb
|
|
// チャンネルのノートではない
|
|
.where('note.channelId IS NULL')
|
|
// または自分がフォローしているチャンネルのノート
|
|
.orWhere(`note.channelId IN (${ channelFollowingQuery.getQuery() })`);
|
|
}));
|
|
|
|
q.setParameters(channelFollowingQuery.getParameters());
|
|
}
|
|
}
|