diff --git a/src/controllers/staging.controller.js b/src/controllers/staging.controller.js index f8c4f3d7..8f8a816e 100644 --- a/src/controllers/staging.controller.js +++ b/src/controllers/staging.controller.js @@ -132,6 +132,28 @@ export const clean = async (req, res) => { } }; +export const editRecord = async (req, res) => { + try { + await assertIfReadOnlyMode(); + await assertHomeOrgExists(); + await assertStagingRecordExists(req.body.uuid); + + await Staging.update( + { data: JSON.stringify([req.body.data]) }, + { where: { uuid: req.body.uuid } }, + ); + + res.status(400).json({ + message: 'Staging Record sucessfully updated.', + }); + } catch (error) { + res.status(400).json({ + message: 'Staging Record can not be edited.', + error: error.message, + }); + } +}; + export const retryRecrod = async (req, res) => { try { await assertIfReadOnlyMode(); diff --git a/src/routes/v1/resources/staging.js b/src/routes/v1/resources/staging.js index 280719c1..b17a08c1 100644 --- a/src/routes/v1/resources/staging.js +++ b/src/routes/v1/resources/staging.js @@ -18,6 +18,10 @@ StagingRouter.get('/', validator.query(stagingGetQuerySchema), (req, res) => { return StagingController.findAll(req, res); }); +StagingRouter.put('/', (req, res) => { + return StagingController.editRecord(req, res); +}); + StagingRouter.delete( '/', validator.body(stagingDeleteSchema), diff --git a/src/validations/staging.validations.js b/src/validations/staging.validations.js index 8aaeeed8..ca188b7c 100644 --- a/src/validations/staging.validations.js +++ b/src/validations/staging.validations.js @@ -12,6 +12,11 @@ export const commitStagingSchema = Joi.object({ comment: Joi.string().optional(), }); +export const stagingEditSchema = Joi.object({ + uuid: Joi.string().required(), + data: Joi.object().required(), +}); + export const stagingGetQuerySchema = Joi.object() .keys({ page: Joi.number(),