diff --git a/apps/server/src/api-data/db/db.controller.ts b/apps/server/src/api-data/db/db.controller.ts index cdc50140a..e49d88358 100644 --- a/apps/server/src/api-data/db/db.controller.ts +++ b/apps/server/src/api-data/db/db.controller.ts @@ -58,6 +58,19 @@ export async function createProjectFile(req: Request, res: Response<{ filename: } } +/** + * Allows downloading of current project file + */ +export async function currentProjectDownload(_req: Request, res: Response) { + const { filename, pathToFile } = await projectService.getCurrentProject(); + res.download(pathToFile, filename, (error) => { + if (error) { + const message = getErrorMessage(error); + res.status(500).send({ message }); + } + }); +} + /** * Allows downloading of project files */ diff --git a/apps/server/src/api-data/db/db.router.ts b/apps/server/src/api-data/db/db.router.ts index 16b4ffcc1..55d95300a 100644 --- a/apps/server/src/api-data/db/db.router.ts +++ b/apps/server/src/api-data/db/db.router.ts @@ -2,6 +2,7 @@ import express from 'express'; import { createProjectFile, + currentProjectDownload, deleteProjectFile, duplicateProjectFile, getInfo, @@ -23,6 +24,7 @@ import { export const router = express.Router(); +router.get('/', currentProjectDownload); router.post('/download', validateFilenameBody, projectDownload); router.post('/upload', uploadProjectFile, postProjectFile); diff --git a/apps/server/src/services/project-service/ProjectService.ts b/apps/server/src/services/project-service/ProjectService.ts index 70c37beea..28e930bd1 100644 --- a/apps/server/src/services/project-service/ProjectService.ts +++ b/apps/server/src/services/project-service/ProjectService.ts @@ -51,6 +51,13 @@ function init() { ensureDirectory(resolveCorruptDirectory); } +export async function getCurrentProject() { + const filename = await getLastLoadedProject(); + const pathToFile = getPathToProject(filename); + + return { filename, pathToFile }; +} + /** * Private function loads a demo project * to be composed in the loading functions