because I got bored of customising my CV for every job
at main 39 lines 1.1 kB view raw
1import type { BaseMapper } from "@cv/system"; 2import { Injectable } from "@nestjs/common"; 3import type { Prisma } from "@prisma/client"; 4 5type PrismaUserFile = Prisma.UserFileGetPayload<object>; 6 7import { UserFile } from "./user-file.entity"; 8 9@Injectable() 10export class UserFileMapper implements BaseMapper<PrismaUserFile, UserFile> { 11 toDomain(prisma: null): null; 12 toDomain(prisma: PrismaUserFile): UserFile; 13 toDomain(prisma: PrismaUserFile | null): UserFile | null; 14 toDomain(prisma: PrismaUserFile | null): UserFile | null { 15 if (!prisma) return null; 16 17 return new UserFile( 18 prisma.id, 19 prisma.profileId, 20 prisma.fingerprint, 21 prisma.fileName, 22 prisma.mimeType, 23 prisma.sizeBytes, 24 prisma.source, 25 prisma.status, 26 prisma.statusMessage, 27 prisma.resultJson, 28 prisma.error, 29 prisma.createdAt, 30 prisma.updatedAt, 31 ); 32 } 33 34 mapToDomain(items: PrismaUserFile[]): UserFile[] { 35 return items 36 .map((item) => this.toDomain(item)) 37 .filter((item): item is UserFile => item !== null); 38 } 39}