From 5e540ada42d6dbfef6e8d161945b2ca349ffc86c Mon Sep 17 00:00:00 2001 From: Elliot DeNolf Date: Tue, 30 Apr 2019 23:41:38 -0400 Subject: [PATCH] Add media put functionality --- src/controllers/media.controller.js | 58 ++--------------------------- src/requestHandlers/findOne.js | 5 ++- src/resolvers/modelById.js | 9 +++-- 3 files changed, 11 insertions(+), 61 deletions(-) diff --git a/src/controllers/media.controller.js b/src/controllers/media.controller.js index cd63d92af5..ffcd2a8fbc 100644 --- a/src/controllers/media.controller.js +++ b/src/controllers/media.controller.js @@ -6,8 +6,6 @@ import findOne from '../requestHandlers/findOne'; export async function update(req, res, next, config) { req.model.setDefaultLocale(req.locale); - // ISSUE: This is not actually a doc that is returned - // It is a doc.toJSON, which is why the doc.save() fails let doc = await findOne(req); if (!doc) return res.status(httpStatus.NOT_FOUND).send('Not Found'); @@ -17,6 +15,7 @@ export async function update(req, res, next, config) { }); if (req.files && req.files.file) { + doc['filename'] = req.files.file.name; let outputFilepath = `${config.staticDir}/${req.files.file.name}`; let moveError = await req.files.file.mv(outputFilepath); if (moveError) return res.status(500).send(moveError); @@ -32,29 +31,6 @@ export async function update(req, res, next, config) { result: doc.toJSON({ virtuals: true }) }); }); - - // req.model.findOne({ _id: req.params._id }, '', {}, (err, doc) => { - // if (!doc) - // return res.status(httpStatus.NOT_FOUND).send('Not Found'); - // - // Object.keys(req.body).forEach(e => { - // doc[e] = req.body[e]; - // }); - // - // let moveError = await req.files.file.mv(outputFilepath); - // if (moveError) return res.status(500).send(moveError); - // resizeAndSave(config, req.files.file); - // - // doc.save((saveError) => { - // if (saveError) - // return res.status(httpStatus.INTERNAL_SERVER_ERROR).json({ error: saveError }); - // - // return res.json({ - // message: 'success', - // result: doc.toJSON({ virtuals: true }) - // }); - // }); - // }) } export async function upload(req, res, next, config) { @@ -85,36 +61,8 @@ export async function upload(req, res, next, config) { return res.status(201) .json({ - id: result.id, - name: result.name, - description: result.description, - filename: result.filename + message: 'success', + result: result.toJSON({ virtuals: true }) }); }); - - // req.files.file.mv(outputFilepath, (err) => { - // if (err) return res.status(500).send(err); - // - // // if (req.files.file.mimetype.split('/')[0] === 'image') { - // // resizeAndSave(config, req.files.file); - // // } - // - // req.model.create({ - // name: req.body.name, - // caption: req.body.caption, - // description: req.body.description, - // filename: req.files.file.name - // }, (mediaCreateError, result) => { - // if (mediaCreateError) - // return res.status(500).json({ error: mediaCreateError }); - // - // return res.status(201) - // .json({ - // id: result.id, - // name: result.name, - // description: result.description, - // filename: result.filename - // }); - // }); - // }) } diff --git a/src/requestHandlers/findOne.js b/src/requestHandlers/findOne.js index aede4a5f05..474881f31e 100644 --- a/src/requestHandlers/findOne.js +++ b/src/requestHandlers/findOne.js @@ -13,9 +13,10 @@ const findOne = (req, res) => { if (res) { modelById(query) .then(doc => res.json(doc)) - .catch(err => res.status(httpStatus.INTERNAL_SERVER_ERROR).json({ error: err })); + .catch(err => res.status(httpStatus.INTERNAL_SERVER_ERROR) + .json({ error: err })); } - return modelById(query); + return modelById(query, true); }; export default findOne; diff --git a/src/resolvers/modelById.js b/src/resolvers/modelById.js index c288192fc7..20200d5748 100644 --- a/src/resolvers/modelById.js +++ b/src/resolvers/modelById.js @@ -1,4 +1,4 @@ -const modelById = query => { +const modelById = (query, returnRawDoc) => { return new Promise((resolve, reject) => { query.Model.findOne({ _id: query.id }, (err, doc) => { @@ -11,11 +11,12 @@ const modelById = query => { if (query.locale) { doc.setLocale(query.locale, query.fallback); - const json = doc.toJSON({ virtuals: true }); - result = json; + result = doc.toJSON({ virtuals: true }); } - resolve(result); + resolve(returnRawDoc + ? doc + : result); }) }) };