From a92847f4a53dda3c10b08efe5365a9bfe775fb13 Mon Sep 17 00:00:00 2001 From: domino8788 Date: Sun, 20 Dec 2020 16:52:19 +0900 Subject: [PATCH] =?UTF-8?q?[#152]=20refactor:=20=EA=B8=B0=EC=A1=B4=20contr?= =?UTF-8?q?oller=EB=A5=BC=20middleware=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/middlewares/block.ts | 74 ++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 backend/src/middlewares/block.ts diff --git a/backend/src/middlewares/block.ts b/backend/src/middlewares/block.ts new file mode 100644 index 0000000..a1d2334 --- /dev/null +++ b/backend/src/middlewares/block.ts @@ -0,0 +1,74 @@ +import { Request, Response, NextFunction } from 'express'; + +import { blockService } from '@/services'; +import { transactionHandler } from '@/aops'; +import { BlockDoc } from '@/models'; + +export const create = transactionHandler( + async (req: Request, res: Response, next: NextFunction): Promise => { + const { parent, block } = await blockService.create({ + parentId: req.params.parentId, + index: req.body.index, + blockDTO: req.body.block, + }); + + res.locals.result = { parent, block }; + next(); + }, +); + +export const update = async ( + req: Request, + res: Response, + next: NextFunction, +): Promise => { + const block = await blockService.update(req.params.blockId, req.body.block); + res.locals.result = { block }; + next(); +}; + +export const move = transactionHandler( + async (req: Request, res: Response, next: NextFunction): Promise => { + const { block, from, to } = await blockService.move( + req.params.blockId, + req.params.toId, + req.body.index, + ); + res.locals.result = { block, from, to }; + next(); + }, +); + +export const deleteCascade = transactionHandler( + async (req: Request, res: Response, next: NextFunction): Promise => { + const parent = await blockService.deleteCascade(req.params.blockId); + res.locals.result = { parent }; + next(); + }, +); + +export const createAndUpdate = transactionHandler( + async (req: Request, res: Response, next: NextFunction): Promise => { + const { create, update } = req.body; + const { parent, block } = await blockService.create(create); + let updated: BlockDoc = null; + if (update) { + updated = await blockService.update(update.blockId, update); + } + res.locals.result = { parent, block, updated }; + next(); + }, +); + +export const deleteAndUpdate = transactionHandler( + async (req: Request, res: Response, next: NextFunction): Promise => { + const { deleteId, update } = req.body; + const parent = await blockService.deleteOnly(deleteId); + let updated: BlockDoc = null; + if (update) { + updated = await blockService.update(update.blockId, update); + } + res.locals.result = { parent, updated }; + next(); + }, +);