fix: アンテナ、クリップ、リストの表示を速くする (#8518)
* アンテナノートを取得するクエリがタイムアウトしないように速くする * テーブル名を直接指定しないようにする * クリップの取得を速くする * リストの取得を速くする
This commit is contained in:
		| @@ -57,13 +57,9 @@ export default define(meta, paramDef, async (ps, user) => { | ||||
| 		throw new ApiError(meta.errors.noSuchAntenna); | ||||
| 	} | ||||
|  | ||||
| 	const antennaQuery = AntennaNotes.createQueryBuilder('joining') | ||||
| 		.select('joining.noteId') | ||||
| 		.where('joining.antennaId = :antennaId', { antennaId: antenna.id }); | ||||
|  | ||||
| 	const query = makePaginationQuery(Notes.createQueryBuilder('note'), | ||||
| 			ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate) | ||||
| 		.andWhere(`note.id IN (${ antennaQuery.getQuery() })`) | ||||
| 		.innerJoin(AntennaNotes.metadata.targetName, 'antennaNote', 'antennaNote.noteId = note.id') | ||||
| 		.innerJoinAndSelect('note.user', 'user') | ||||
| 		.leftJoinAndSelect('user.avatar', 'avatar') | ||||
| 		.leftJoinAndSelect('user.banner', 'banner') | ||||
| @@ -75,7 +71,7 @@ export default define(meta, paramDef, async (ps, user) => { | ||||
| 		.leftJoinAndSelect('renote.user', 'renoteUser') | ||||
| 		.leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') | ||||
| 		.leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner') | ||||
| 		.setParameters(antennaQuery.getParameters()); | ||||
| 		.andWhere('antennaNote.antennaId = :antennaId', { antennaId: antenna.id }); | ||||
|  | ||||
| 	generateVisibilityQuery(query, user); | ||||
| 	generateMutedUserQuery(query, user); | ||||
|   | ||||
| @@ -57,12 +57,8 @@ export default define(meta, paramDef, async (ps, user) => { | ||||
| 		throw new ApiError(meta.errors.noSuchClip); | ||||
| 	} | ||||
|  | ||||
| 	const clipQuery = ClipNotes.createQueryBuilder('joining') | ||||
| 		.select('joining.noteId') | ||||
| 		.where('joining.clipId = :clipId', { clipId: clip.id }); | ||||
|  | ||||
| 	const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId) | ||||
| 		.andWhere(`note.id IN (${ clipQuery.getQuery() })`) | ||||
| 		.innerJoin(ClipNotes.metadata.targetName, 'clipNote', 'clipNote.noteId = note.id') | ||||
| 		.innerJoinAndSelect('note.user', 'user') | ||||
| 		.leftJoinAndSelect('user.avatar', 'avatar') | ||||
| 		.leftJoinAndSelect('user.banner', 'banner') | ||||
| @@ -74,7 +70,7 @@ export default define(meta, paramDef, async (ps, user) => { | ||||
| 		.leftJoinAndSelect('renote.user', 'renoteUser') | ||||
| 		.leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') | ||||
| 		.leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner') | ||||
| 		.setParameters(clipQuery.getParameters()); | ||||
| 		.andWhere('clipNote.clipId = :clipId', { clipId: clip.id }); | ||||
|  | ||||
| 	if (user) { | ||||
| 		generateVisibilityQuery(query, user); | ||||
|   | ||||
| @@ -63,12 +63,8 @@ export default define(meta, paramDef, async (ps, user) => { | ||||
| 	} | ||||
|  | ||||
| 	//#region Construct query | ||||
| 	const listQuery = UserListJoinings.createQueryBuilder('joining') | ||||
| 		.select('joining.userId') | ||||
| 		.where('joining.userListId = :userListId', { userListId: list.id }); | ||||
|  | ||||
| 	const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId) | ||||
| 		.andWhere(`note.userId IN (${ listQuery.getQuery() })`) | ||||
| 		.innerJoin(UserListJoinings.metadata.targetName, 'userListJoining', 'userListJoining.userId = note.userId') | ||||
| 		.innerJoinAndSelect('note.user', 'user') | ||||
| 		.leftJoinAndSelect('user.avatar', 'avatar') | ||||
| 		.leftJoinAndSelect('user.banner', 'banner') | ||||
| @@ -80,7 +76,7 @@ export default define(meta, paramDef, async (ps, user) => { | ||||
| 		.leftJoinAndSelect('renote.user', 'renoteUser') | ||||
| 		.leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') | ||||
| 		.leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner') | ||||
| 		.setParameters(listQuery.getParameters()); | ||||
| 		.andWhere('userListJoining.userListId = :userListId', { userListId: list.id }); | ||||
|  | ||||
| 	generateVisibilityQuery(query, user); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 xianon
					xianon