UNPKG

@wikoci/payloadjs

Version:

Payload CMS SDK for use in javascript

119 lines (93 loc) 3.7 kB
const upload = ( options = { } ) => { return (incomingConfig) => { incomingConfig.collections.filter(collection => { if (collection.upload) { collection.endpoints =collection?.endpoints || [] collection.endpoints = [ { path: "/", method: "post", handler: async function (req, res, next) { try { if (!req.files.file) return res.status(400).send({ error: "No files " }); var data = JSON.parse(req.body.data || {}); var files = []; var multiple = req.files?.file.length || 0; multiple > 0 ? (files = req.files.file) : files.push(req.files.file); var response = []; var errors = []; console.log("Files", files); for await (var file of files) { await req.payload .create({ collection: req.collection.config.slug, data: data, file: file, }) .then((e) => response.push(e)) .catch((err) => errors.push(err)); } res.send({ doc: response, errors: errors }); } catch (err) { console.log(err); res .status(400) .send({ error: "Action limited", data: response }); } }, }, { path: "/:id", method: "put", handler: async function (req, res, next) { try { if (!req.files.file) return res.status(400).send({ error: "No files " }); var data = JSON.parse(req.body.data || {}); var files = []; var multiple = req.files?.file.length || 0; multiple > 0 ? (files = req.files.file) : files.push(req.files.file); var response = []; var errors = []; console.log("Files", files); for await (var file of files) { await req.payload .update({ id:req.params.id, collection: req.collection.config.slug, data: data, file: file, }) .then((e) => response.push(e)) .catch((err) => errors.push(err)); } res.send({ doc: response, errors: errors }); } catch (err) { console.log(err); res .status(400) .send({ error: "Action limited", data: response }); } }, }, ...collection.endpoints, ]; } }) const config = { ...incomingConfig, }; return config; }; }; module.exports = { upload };