Tolerate missing createdAt in user profile response
- serverTimestamp 미해석 문서나 레거시 문서에서 toIso가 던져 GET /user가 500이 되는 경로 제거 - UserProfileDto.createdAt을 optional로 두고 toIsoOrUndefined 사용 — 값이 없으면 키를 생략한다 - 스프레드로 조립하던 기존 동작(키 생략)과 동일하게 맞춤
This commit is contained in:
parent
8cb31b8122
commit
852b56d00c
@ -29,7 +29,7 @@ import {
|
|||||||
type Provider,
|
type Provider,
|
||||||
type User,
|
type User,
|
||||||
} from "../types/panit";
|
} from "../types/panit";
|
||||||
import { toIso } from "../types/dto/iso";
|
import { toIso, toIsoOrUndefined } from "../types/dto/iso";
|
||||||
import type { CheckNicknameDto, UserProfileDto } from "../types/dto/userDto";
|
import type { CheckNicknameDto, UserProfileDto } from "../types/dto/userDto";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -46,7 +46,7 @@ function toUserProfile(user: User): UserProfileDto {
|
|||||||
provider: user.provider,
|
provider: user.provider,
|
||||||
favoriteTeamCode: user.favoriteTeamCode,
|
favoriteTeamCode: user.favoriteTeamCode,
|
||||||
knowledgeLevel: user.knowledgeLevel,
|
knowledgeLevel: user.knowledgeLevel,
|
||||||
createdAt: toIso(user.createdAt),
|
createdAt: toIsoOrUndefined(user.createdAt),
|
||||||
lastJudgedDate: user.lastJudgedDate,
|
lastJudgedDate: user.lastJudgedDate,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,13 @@
|
|||||||
import type { KnowledgeLevel, NotificationsMap, Provider, TeamCode } from "../panit";
|
import type { KnowledgeLevel, NotificationsMap, Provider, TeamCode } from "../panit";
|
||||||
import type { DateString } from "../dateString";
|
import type { DateString } from "../dateString";
|
||||||
|
|
||||||
/** 클라이언트에 노출되는 유저 프로필 응답. `createdAt`은 UTC ISO 8601 문자열. */
|
/**
|
||||||
|
* 클라이언트에 노출되는 유저 프로필 응답. `createdAt`은 UTC ISO 8601 문자열.
|
||||||
|
*
|
||||||
|
* `createdAt`은 optional 이다 — serverTimestamp 가 아직 해석되지 않은 문서나
|
||||||
|
* 필드가 없는 레거시 문서를 읽었을 때 500 을 내는 대신 키를 생략한다
|
||||||
|
* (스프레드로 조립하던 기존 동작과 동일).
|
||||||
|
*/
|
||||||
export interface UserProfileDto {
|
export interface UserProfileDto {
|
||||||
displayName: string;
|
displayName: string;
|
||||||
email: string;
|
email: string;
|
||||||
@ -9,7 +15,7 @@ export interface UserProfileDto {
|
|||||||
provider: Provider;
|
provider: Provider;
|
||||||
favoriteTeamCode?: TeamCode;
|
favoriteTeamCode?: TeamCode;
|
||||||
knowledgeLevel: KnowledgeLevel;
|
knowledgeLevel: KnowledgeLevel;
|
||||||
createdAt: string;
|
createdAt?: string;
|
||||||
lastJudgedDate?: DateString;
|
lastJudgedDate?: DateString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user