Files
calebburke.dev/api/src/serializers/current-user/show-serializer.ts
T
2026-07-17 04:39:18 -07:00

48 lines
1.2 KiB
TypeScript

import { isUndefined, pick } from "lodash"
import { User, UserPreference } from "@/models"
import BaseSerializer from "@/serializers/base-serializer"
import {
ShowSerializer as UserPreferenceShowSerializer,
type UserPreferenceShowView,
} from "@/serializers/user-preferences/show-serializer"
export type UserShowView = Pick<
User,
"id" | "email" | "firstName" | "lastName" | "displayName" | "roles" | "createdAt" | "updatedAt"
> & {
preferences?: UserPreferenceShowView[]
}
export class ShowSerializer extends BaseSerializer<User> {
perform(): UserShowView {
const { userPreferences } = this.record
const serializedUserPreferences = isUndefined(userPreferences)
? undefined
: this.serializeUserPreferences(userPreferences)
return {
...pick(this.record, [
"id",
"email",
"firstName",
"lastName",
"displayName",
"roles",
"createdAt",
"updatedAt",
]),
preferences: serializedUserPreferences,
}
}
private serializeUserPreferences(userPreferences: UserPreference[]) {
return userPreferences.map((userPreference) =>
UserPreferenceShowSerializer.perform(userPreference)
)
}
}
export default ShowSerializer