UNPKG

stackpress

Version:

Incept is a content management framework.

31 lines (30 loc) 1.24 kB
import detail from '../actions/detail.js'; export default function detailEventFactory(model) { return async function DetailEventAction(req, res, ctx) { if (res.body || (res.code && res.code !== 200)) { return; } const engine = ctx.plugin('database'); if (!engine) return; const ids = Object.fromEntries(model.ids .map(column => [column.name, req.data(column.name)]) .filter(entry => Boolean(entry[1]))); if (!req.data.has('columns') && Array.isArray(model.query) && model.query.length && model.query.every(column => typeof column === 'string')) { req.data.set('columns', model.query); } const columns = req.data('columns'); const selectors = Array.isArray(columns) && columns.every(column => typeof column === 'string') ? columns : ['*']; const seed = ctx.config.path('database.seed'); const response = await detail(model, engine, ids, selectors, seed); if (response.code === 200 && !response.results) { response.code = 404; response.status = 'Not Found'; } res.fromStatusResponse(response); }; } ;