mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-12 07:43:10 +10:00
This commit is contained in:
@ -209,6 +209,8 @@ export class PrinterService {
|
||||
|
||||
return resumeUrl;
|
||||
} catch (error) {
|
||||
this.logger.error(error);
|
||||
|
||||
throw new InternalServerErrorException(
|
||||
ErrorMessage.ResumePrinterError,
|
||||
(error as Error).message,
|
||||
|
||||
@ -8,7 +8,8 @@ import { Prisma } from "@prisma/client";
|
||||
import { CreateResumeDto, ImportResumeDto, ResumeDto, UpdateResumeDto } from "@reactive-resume/dto";
|
||||
import { defaultResumeData, ResumeData } from "@reactive-resume/schema";
|
||||
import type { DeepPartial } from "@reactive-resume/utils";
|
||||
import { ErrorMessage, generateRandomName, kebabCase } from "@reactive-resume/utils";
|
||||
import { ErrorMessage, generateRandomName } from "@reactive-resume/utils";
|
||||
import slugify from "@sindresorhus/slugify";
|
||||
import deepmerge from "deepmerge";
|
||||
import { PrismaService } from "nestjs-prisma";
|
||||
|
||||
@ -40,7 +41,7 @@ export class ResumeService {
|
||||
userId,
|
||||
title: createResumeDto.title,
|
||||
visibility: createResumeDto.visibility,
|
||||
slug: createResumeDto.slug ?? kebabCase(createResumeDto.title),
|
||||
slug: createResumeDto.slug ?? slugify(createResumeDto.title),
|
||||
},
|
||||
});
|
||||
}
|
||||
@ -54,7 +55,7 @@ export class ResumeService {
|
||||
visibility: "private",
|
||||
data: importResumeDto.data,
|
||||
title: importResumeDto.title ?? randomTitle,
|
||||
slug: importResumeDto.slug ?? kebabCase(randomTitle),
|
||||
slug: importResumeDto.slug ?? slugify(randomTitle),
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { Injectable, InternalServerErrorException, Logger, OnModuleInit } from "@nestjs/common";
|
||||
import { ConfigService } from "@nestjs/config";
|
||||
import { createId } from "@paralleldrive/cuid2";
|
||||
import slugify from "@sindresorhus/slugify";
|
||||
import { MinioClient, MinioService } from "nestjs-minio-client";
|
||||
import sharp from "sharp";
|
||||
|
||||
@ -116,14 +117,19 @@ export class StorageService implements OnModuleInit {
|
||||
) {
|
||||
const extension = type === "resumes" ? "pdf" : "jpg";
|
||||
const storageUrl = this.configService.getOrThrow<string>("STORAGE_URL");
|
||||
const filepath = `${userId}/${type}/${filename}.${extension}`;
|
||||
|
||||
let normalizedFilename = slugify(filename);
|
||||
if (!normalizedFilename) normalizedFilename = createId();
|
||||
|
||||
const filepath = `${userId}/${type}/${normalizedFilename}.${extension}`;
|
||||
const url = `${storageUrl}/${filepath}`;
|
||||
|
||||
const metadata =
|
||||
extension === "jpg"
|
||||
? { "Content-Type": "image/jpeg" }
|
||||
: {
|
||||
"Content-Type": "application/pdf",
|
||||
"Content-Disposition": `attachment; filename=${filename}.${extension}`,
|
||||
"Content-Disposition": `attachment; filename=${normalizedFilename}.${extension}`,
|
||||
};
|
||||
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user