import type { BaseMapper } from "@cv/core"; import { Injectable } from "@nestjs/common"; import type { Prisma } from "@prisma/client"; type PrismaUserFile = Prisma.UserFileGetPayload; import { UserFile } from "./user-file.entity"; @Injectable() export class UserFileMapper implements BaseMapper { toDomain(prisma: null): null; toDomain(prisma: PrismaUserFile): UserFile; toDomain(prisma: PrismaUserFile | null): UserFile | null; toDomain(prisma: PrismaUserFile | null): UserFile | null { if (!prisma) return null; return new UserFile( prisma.id, prisma.profileId, prisma.fingerprint, prisma.fileName, prisma.mimeType, prisma.sizeBytes, prisma.source, prisma.status, prisma.statusMessage, prisma.resultJson, prisma.error, prisma.createdAt, prisma.updatedAt, ); } mapToDomain(items: PrismaUserFile[]): UserFile[] { return items .map((item) => this.toDomain(item)) .filter((item): item is UserFile => item !== null); } }