because I got bored of customising my CV for every job
1import type { BaseMapper } from "@cv/system";
2import { Injectable } from "@nestjs/common";
3import type { Credentials as PrismaCredentials } from "@prisma/client";
4import { Credentials } from "./credentials.entity";
5
6@Injectable()
7export class CredentialsMapper
8 implements BaseMapper<PrismaCredentials, Credentials>
9{
10 toDomain(prismaCredentials: null): null;
11 toDomain(prismaCredentials: PrismaCredentials): Credentials;
12 toDomain(prismaCredentials: PrismaCredentials | null): Credentials | null;
13 toDomain(prismaCredentials: PrismaCredentials | null): Credentials | null {
14 if (prismaCredentials === null) {
15 return null;
16 }
17 return new Credentials(
18 prismaCredentials.id,
19 prismaCredentials.userId,
20 prismaCredentials.email,
21 prismaCredentials.password,
22 prismaCredentials.createdAt,
23 prismaCredentials.updatedAt,
24 prismaCredentials.emailVerifiedAt ?? null,
25 prismaCredentials.emailVerificationToken ?? null,
26 prismaCredentials.emailVerificationTokenExpiresAt ?? null,
27 prismaCredentials.passwordResetToken ?? null,
28 prismaCredentials.passwordResetTokenExpiresAt ?? null,
29 );
30 }
31
32 mapToDomain(prismaCredentials: PrismaCredentials[]): Credentials[] {
33 return prismaCredentials.map((credentials) => this.toDomain(credentials));
34 }
35}