From c9e1fa17bd8f847428df8340ce794df89cf4061f Mon Sep 17 00:00:00 2001 From: niamu01 Date: Fri, 5 Jan 2024 18:52:40 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20:recycle:=20=ED=95=9C=EA=B0=9C?= =?UTF-8?q?=EB=A7=8C=20=EC=B0=BE=EB=8A=94=20=EC=9A=94=EC=86=8C=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=98=EC=97=AC=20find=20->=20findOne=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - #406 refactor: :recycle: 팔로우 여부에 대해 나 자신 예외처리 제거, input을 login에서 id로 변경 - #406 revert: :fire: follower, following List 삭제 - #406 refactor: :recycle: findOne 할 때 select 추가 --- app/src/api/cursusUser/cursusUser.service.ts | 12 ++-- app/src/follow/follow.resolver.ts | 64 +------------------- app/src/follow/follow.service.ts | 33 ++++------ app/src/schema.gql | 9 +-- 4 files changed, 24 insertions(+), 94 deletions(-) diff --git a/app/src/api/cursusUser/cursusUser.service.ts b/app/src/api/cursusUser/cursusUser.service.ts index d6f7b94d..872c9362 100644 --- a/app/src/api/cursusUser/cursusUser.service.ts +++ b/app/src/api/cursusUser/cursusUser.service.ts @@ -78,15 +78,17 @@ export class CursusUserService { } async getuserIdByLogin(login: string): Promise { - const userId = await this.findOneAndLean({ - filter: { 'user.login': login }, - }).then((user) => user?.user.id); + const cursusUser: { user: Pick } | null = + await this.findOneAndLean({ + filter: { 'user.login': login }, + select: { 'user.id': 1 }, + }); - if (!userId) { + if (!cursusUser) { return null; } - return userId; + return cursusUser.user.id; } async findAllAndLean( diff --git a/app/src/follow/follow.resolver.ts b/app/src/follow/follow.resolver.ts index bdca5d19..308e962d 100644 --- a/app/src/follow/follow.resolver.ts +++ b/app/src/follow/follow.resolver.ts @@ -63,44 +63,14 @@ export class FollowResolver { } @UseGuards(StatAuthGuard) - @Query((_returns) => Boolean, { nullable: true }) + @Query((_returns) => Boolean) async getIsFollowing( @MyUserId() userId: number, - @Args('target') target: string, - ): Promise { - const targetId = await this.followService.userIdByLogin(target); - + @Args('targetId') targetId: number, + ): Promise { return await this.followService.isFollowing(userId, targetId); } - @UseGuards(StatAuthGuard) - @Query((_returns) => FollowListWithCount) - async getFollowerList( - @MyUserId() userId: number, - @Args('target') target: string, - @Args('limit', { defaultValue: 3 }) limit: number, - @Args('sortOrder', { - type: () => FollowSortOrder, - defaultValue: FollowSortOrder.FOLLOW_AT_DESC, - }) - sortOrder: FollowSortOrder, - ): Promise { - const targetId = await this.followService.userIdByLogin(target); - const count = await this.followService.followerCount(targetId); - - const followerList = await this.followService.followerList( - userId, - target, - limit, - sortOrder, - ); - - return { - count, - followList: followerList, - }; - } - @UseGuards(StatAuthGuard) @Query((_returns) => FollowListPaginated) async getFollowerPaginated( @@ -110,34 +80,6 @@ export class FollowResolver { return await this.followService.followerPaginated(userId, args); } - @UseGuards(StatAuthGuard) - @Query((_returns) => FollowListWithCount) - async getFollowingList( - @MyUserId() userId: number, - @Args('target') target: string, - @Args('limit', { defaultValue: 3 }) limit: number, - @Args('sortOrder', { - type: () => FollowSortOrder, - defaultValue: FollowSortOrder.FOLLOW_AT_DESC, - }) - sortOrder: FollowSortOrder, - ): Promise { - const targetId = await this.followService.userIdByLogin(target); - const count = await this.followService.followingCount(targetId); - - const followingList = await this.followService.followingList( - userId, - target, - limit, - sortOrder, - ); - - return { - count, - followList: followingList, - }; - } - @UseGuards(StatAuthGuard) @Query((_returns) => FollowListPaginated) async getFollowingPaginated( diff --git a/app/src/follow/follow.service.ts b/app/src/follow/follow.service.ts index 57f93b9e..39af7be6 100644 --- a/app/src/follow/follow.service.ts +++ b/app/src/follow/follow.service.ts @@ -62,12 +62,15 @@ export class FollowService { ): Promise { const following = await this.cursusUserService.getuserIdByLogin(target); - const alreadyFollow = await this.followModel.find({ - userId: userId, - followId: following, - }); + const alreadyFollow = await this.followModel.findOne( + { + userId: userId, + followId: following, + }, + { _id: 1 }, + ); - if (!following || userId === following || alreadyFollow.length) { + if (!following || userId === following || alreadyFollow) { return { message: 'fail' }; } @@ -112,7 +115,6 @@ export class FollowService { return { message: 'fail' }; } - // getFollowerList("yeju") -> yeju를 팔로우 하는 사람들 async followerList( userId: number, target: string, @@ -313,20 +315,11 @@ export class FollowService { return await this.followModel.countDocuments({ userId, filter }); } - async isFollowing( - userId: number, - targetId: number, - ): Promise { - let isFollowing: boolean | undefined = undefined; - - if (userId !== targetId) { - isFollowing = !!(await this.followModel.findOne({ - userId, - targetId, - })); - } - - return isFollowing; + async isFollowing(userId: number, targetId: number): Promise { + return !!(await this.followModel.findOne({ + userId, + targetId, + })); } async checkFollowing( diff --git a/app/src/schema.gql b/app/src/schema.gql index a2f6f3b5..1a24bd4e 100644 --- a/app/src/schema.gql +++ b/app/src/schema.gql @@ -80,11 +80,6 @@ type FollowListPaginated { pageInfo: CursorPageInfo! } -type FollowListWithCount { - followList: [FollowList!]! - count: Int! -} - type LinkableAccount { platform: String! id: String! @@ -641,10 +636,8 @@ type Query { getEvalLogs(after: String, first: Int! = 20, corrector: String, corrected: String, projectName: String, outstandingOnly: Boolean! = false, imperfectOnly: Boolean! = false, sortOrder: EvalLogSortOrder! = BEGIN_AT_DESC): EvalLogsPaginated! getSetting: Setting! getExpTable: [ExpTable!]! - getIsFollowing(target: String!): Boolean - getFollowerList(target: String!, limit: Int! = 3, sortOrder: FollowSortOrder! = FOLLOW_AT_DESC): FollowListWithCount! + getIsFollowing(targetId: Int!): Boolean! getFollowerPaginated(after: String, first: Int! = 20, target: String!, sortOrder: FollowSortOrder! = FOLLOW_AT_DESC): FollowListPaginated! - getFollowingList(target: String!, limit: Int! = 3, sortOrder: FollowSortOrder! = FOLLOW_AT_DESC): FollowListWithCount! getFollowingPaginated(after: String, first: Int! = 20, target: String!, sortOrder: FollowSortOrder! = FOLLOW_AT_DESC): FollowListPaginated! }