From 0860a5e0b30a3681d4f7dab04d91b36733d69f79 Mon Sep 17 00:00:00 2001 From: Yogmatee Roochun <yroochun@ebi.ac.uk> Date: Fri, 22 Feb 2019 14:24:26 +0000 Subject: [PATCH] issue 378 resolved --- server/utils/db.js | 23 +++++++++++++++---- server/xmlValidation/index.js | 3 ++- .../xpub-model/entities/file/data-access.js | 19 +++++++++++++++ 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/server/utils/db.js b/server/utils/db.js index 5a5f5df76..8442e7f3d 100644 --- a/server/utils/db.js +++ b/server/utils/db.js @@ -3,10 +3,25 @@ const logger = require('@pubsweet/logger') const FileModel = rfr('server/xpub-model/entities/file/data-access') -module.exports.createFiles = async function createFiles(filesArr) { - for (let i = 0; i < filesArr.length; i += 1) { - /* eslint-disable no-await-in-loop */ - const filedb = await new FileModel(filesArr[i]).save({ +module.exports.createFiles = async function createFiles( + filesArr, + manuscriptId, +) { + const existingFiles = await FileModel.selectByManIdConvertedFiles( + manuscriptId, + ) + await upsertFileUrl('tempHTML', filesArr, existingFiles) + await upsertFileUrl('PMCfinal', filesArr, existingFiles) +} + +async function upsertFileUrl(fileType, filesArr, existingFiles) { + const newFile = filesArr.find(file => file.type === fileType) + const existingFile = existingFiles.find(file => file.type === fileType) + if (existingFile) { + const filedb = await FileModel.updateFileUrl(existingFile.id, newFile.url) + logger.info(filedb) + } else { + const filedb = await new FileModel(newFile).save({ insertMissing: true, }) logger.info(filedb) diff --git a/server/xmlValidation/index.js b/server/xmlValidation/index.js index a05a7305a..fb7a5733a 100755 --- a/server/xmlValidation/index.js +++ b/server/xmlValidation/index.js @@ -132,11 +132,12 @@ module.exports.pushXML = async function pushXML(fileUrl, manuscriptId) { ) } const dbFilesArr = filesArr.map(obj => { + obj.url = `/download/${uuid}${obj.extension}` delete obj.extension return obj }) - await db.createFiles(dbFilesArr) + await db.createFiles(dbFilesArr, manuscriptId) await Manuscript.updatePdfDepositState(manuscriptId) await Manuscript.clearFormState(manuscriptId) logger.info('Uploading to Minio and the database has been completed.') diff --git a/server/xpub-model/entities/file/data-access.js b/server/xpub-model/entities/file/data-access.js index c54b02e15..df7542f64 100644 --- a/server/xpub-model/entities/file/data-access.js +++ b/server/xpub-model/entities/file/data-access.js @@ -74,6 +74,25 @@ class File extends EpmcBaseModel { return rows.map(rowToEntity) } + static async selectByManIdConvertedFiles(manId) { + const rows = await runQuery( + buildQuery + .select() + .from('file') + .where({ 'file.manuscript_id': manId }) + .andWhere('file.type', 'in', ['tempHTML', 'PMCfinal']) + .whereNull('file.deleted'), + ) + return rows.map(rowToEntity) + } + + static async updateFileUrl(id, fileurl) { + const fileUpdated = await File.query() + .patch({ url: fileurl }) + .where('id', id) + return fileUpdated + } + static async selectAll() { const rows = await runQuery( buildQuery -- GitLab