import type { BaseMapper } from "@cv/system"; import { Injectable } from "@nestjs/common"; import type { Credentials as PrismaCredentials } from "@prisma/client"; import { Credentials } from "./credentials.entity"; @Injectable() export class CredentialsMapper implements BaseMapper { toDomain(prismaCredentials: null): null; toDomain(prismaCredentials: PrismaCredentials): Credentials; toDomain(prismaCredentials: PrismaCredentials | null): Credentials | null; toDomain(prismaCredentials: PrismaCredentials | null): Credentials | null { if (prismaCredentials === null) { return null; } return new Credentials( prismaCredentials.id, prismaCredentials.userId, prismaCredentials.email, prismaCredentials.password, prismaCredentials.createdAt, prismaCredentials.updatedAt, prismaCredentials.emailVerifiedAt ?? null, prismaCredentials.emailVerificationToken ?? null, prismaCredentials.emailVerificationTokenExpiresAt ?? null, prismaCredentials.passwordResetToken ?? null, prismaCredentials.passwordResetTokenExpiresAt ?? null, ); } mapToDomain(prismaCredentials: PrismaCredentials[]): Credentials[] { return prismaCredentials.map((credentials) => this.toDomain(credentials)); } }