diff --git a/app/src/follow/follow.resolver.ts b/app/src/follow/follow.resolver.ts index 370d5244..87d4f376 100644 --- a/app/src/follow/follow.resolver.ts +++ b/app/src/follow/follow.resolver.ts @@ -64,11 +64,13 @@ export class FollowResolver { @UseGuards(StatAuthGuard) @Query((_returns) => Boolean, { nullable: true }) - async getFollowStatus( + async getIsFollowing( @MyUserId() userId: number, @Args('target') target: string, ): Promise { - return await this.followService.followStatus(userId, target); + const targetId = await this.followService.userIdByLogin(target); + + return await this.followService.isFollowing(userId, targetId); } @UseGuards(StatAuthGuard) diff --git a/app/src/follow/follow.service.ts b/app/src/follow/follow.service.ts index 631ea9b0..477c1166 100644 --- a/app/src/follow/follow.service.ts +++ b/app/src/follow/follow.service.ts @@ -148,7 +148,7 @@ export class FollowService { }), ); - return await this.checkFollowingStatus(userId, followerUserPreview); + return await this.checkFollowing(userId, followerUserPreview); } async followerPaginated( @@ -159,7 +159,6 @@ export class FollowService { const totalCount = await this.followerCount(targetId); - const aggregate = this.followModel.aggregate(); const filter: FilterQuery = {}; if (after) { @@ -242,7 +241,7 @@ export class FollowService { }), ); - return await this.checkFollowingStatus(userId, followingUserPreview); + return await this.checkFollowing(userId, followingUserPreview); } async followingPaginated( @@ -253,7 +252,6 @@ export class FollowService { const totalCount = await this.followingCount(targetId); - const aggregate = this.followModel.aggregate(); const filter: FilterQuery = {}; if (after) { @@ -313,39 +311,28 @@ export class FollowService { return await this.followModel.countDocuments({ userId, filter }); } - async followStatus( + async isFollowing( userId: number, - target: string, + targetId: number, ): Promise { - const followId = await this.userIdByLogin(target); - let isFollowing: boolean | undefined = undefined; - if (userId !== followId) { + if (userId !== targetId) { isFollowing = !!(await this.followModel.findOne({ userId, - followId, + targetId, })); } return isFollowing; } - async checkFollowingStatus( + async checkFollowing( userId: number, userPreview: UserPreview[], ): Promise { const followList = userPreview.map(async (user) => { - let isFollowing: boolean | undefined = undefined; - - if (userId !== user.id) { - const isFollowed = await this.followModel.findOne({ - userId: userId, - followId: user.id, - }); - - isFollowing = !!isFollowed; - } + const isFollowing = await this.isFollowing(userId, user.id); return { isFollowing, user }; }); diff --git a/app/src/follow/model/follow.model.ts b/app/src/follow/model/follow.model.ts index a02eda77..4bae9724 100644 --- a/app/src/follow/model/follow.model.ts +++ b/app/src/follow/model/follow.model.ts @@ -1,7 +1,6 @@ import { Field, ObjectType, createUnionType } from '@nestjs/graphql'; import { UserPreview } from 'src/common/models/common.user.model'; import { CursorPaginated } from 'src/pagination/cursor/models/pagination.cursor.model'; -import { follow } from '../db/follow.database.schema'; @ObjectType() export class FollowList { diff --git a/app/src/page/home/user/models/home.user.model.ts b/app/src/page/home/user/models/home.user.model.ts index 666fc46c..3a022399 100644 --- a/app/src/page/home/user/models/home.user.model.ts +++ b/app/src/page/home/user/models/home.user.model.ts @@ -1,5 +1,5 @@ -import { Args, ArgsType, Field, ObjectType } from '@nestjs/graphql'; -import { IsDateString, IsNumber, Max, Min, NotEquals } from 'class-validator'; +import { ArgsType, Field, ObjectType } from '@nestjs/graphql'; +import { IsNumber, Max, Min, NotEquals } from 'class-validator'; import { Rate } from 'src/common/models/common.rate.model'; import { UserRank } from 'src/common/models/common.user.model'; import { IntRecord } from 'src/common/models/common.valueRecord.model'; diff --git a/app/src/schema.gql b/app/src/schema.gql index 02aa9ff2..a2f6f3b5 100644 --- a/app/src/schema.gql +++ b/app/src/schema.gql @@ -641,7 +641,7 @@ 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!]! - getFollowStatus(target: String!): Boolean + getIsFollowing(target: String!): Boolean getFollowerList(target: String!, limit: Int! = 3, sortOrder: FollowSortOrder! = FOLLOW_AT_DESC): FollowListWithCount! 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!