From 9855405b8989713b81709fc1700e2ead97423467 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 18 Aug 2020 22:44:21 +0900 Subject: Channel (#6621) * 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 --- src/server/api/common/generate-channel-query.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/server/api/common/generate-channel-query.ts (limited to 'src/server/api/common') diff --git a/src/server/api/common/generate-channel-query.ts b/src/server/api/common/generate-channel-query.ts new file mode 100644 index 0000000000..c0337b2c6b --- /dev/null +++ b/src/server/api/common/generate-channel-query.ts @@ -0,0 +1,24 @@ +import { User } from '../../../models/entities/user'; +import { ChannelFollowings } from '../../../models'; +import { Brackets, SelectQueryBuilder } from 'typeorm'; + +export function generateChannelQuery(q: SelectQueryBuilder, 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()); + } +} -- cgit v1.2.3-freya