summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/users
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2023-11-30 14:49:26 +0900
committerGitHub <noreply@github.com>2023-11-30 14:49:26 +0900
commitb05d71fabff55ac5653994a1188c6db88048e8ee (patch)
tree1d2b60b73ac5c77ee37872f3d45f77144795afea /packages/backend/src/server/api/endpoints/users
parentenhance(dev): 開発モード時にlocaleと型定義が自動的に再生成... (diff)
downloadsharkey-b05d71fabff55ac5653994a1188c6db88048e8ee.tar.gz
sharkey-b05d71fabff55ac5653994a1188c6db88048e8ee.tar.bz2
sharkey-b05d71fabff55ac5653994a1188c6db88048e8ee.zip
feat(frontend): 今日誕生日のフォロー中のユーザーを一覧表示できるウィジェットを追加 (#12450)
* (add) 今日誕生日のフォロイー一覧表示 * Update Changelog * Update Changelog * 実装漏れ * create index * (fix) index
Diffstat (limited to 'packages/backend/src/server/api/endpoints/users')
-rw-r--r--packages/backend/src/server/api/endpoints/users/following.ts23
1 files changed, 23 insertions, 0 deletions
diff --git a/packages/backend/src/server/api/endpoints/users/following.ts b/packages/backend/src/server/api/endpoints/users/following.ts
index 03487275a3..ead7ba8c40 100644
--- a/packages/backend/src/server/api/endpoints/users/following.ts
+++ b/packages/backend/src/server/api/endpoints/users/following.ts
@@ -42,6 +42,12 @@ export const meta = {
code: 'FORBIDDEN',
id: 'f6cdb0df-c19f-ec5c-7dbb-0ba84a1f92ba',
},
+
+ birthdayInvalid: {
+ message: 'Birthday date format is invalid.',
+ code: 'BIRTHDAY_DATE_FORMAT_INVALID',
+ id: 'a2b007b9-4782-4eba-abd3-93b05ed4130d',
+ },
},
} as const;
@@ -59,6 +65,8 @@ export const paramDef = {
nullable: true,
description: 'The local host is represented with `null`.',
},
+
+ birthday: { type: 'string', nullable: true },
},
anyOf: [
{ required: ['userId'] },
@@ -117,6 +125,21 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
.andWhere('following.followerId = :userId', { userId: user.id })
.innerJoinAndSelect('following.followee', 'followee');
+ if (ps.birthday) {
+ try {
+ const d = new Date(ps.birthday);
+ d.setHours(0, 0, 0, 0);
+ const birthday = `${(d.getMonth() + 1).toString().padStart(2, '0')}-${d.getDate().toString().padStart(2, '0')}`;
+ const birthdayUserQuery = this.userProfilesRepository.createQueryBuilder('user_profile');
+ birthdayUserQuery.select('user_profile.userId')
+ .where(`SUBSTR(user_profile.birthday, 6, 5) = '${birthday}'`);
+
+ query.andWhere(`following.followeeId IN (${ birthdayUserQuery.getQuery() })`);
+ } catch (err) {
+ throw new ApiError(meta.errors.birthdayInvalid);
+ }
+ }
+
const followings = await query
.limit(ps.limit)
.getMany();