generated from alphane/template
48 lines
1.2 KiB
TypeScript
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
|