UNPKG

@websolutespa/payload-plugin-bowl

Version:

Bowl PayloadCms plugin of the BOM Repository

81 lines (80 loc) 3.81 kB
import { ResponseError, ResponseSuccess } from '@websolutespa/payload-utils/server'; import { decorateMenu_, decorateRichText_, decorateSchema_ } from '../decorators'; import { findByIDHandler } from '../utils/findByIDHandler'; import { findHandler } from '../utils/findHandler'; import { getCollectionItem, getCollectionItems } from './collection.service'; /** * Rest api menu get handler. */ export const menuIndexGet = (options)=>({ path: '/', method: 'get', handler: async (req)=>{ try { const { query } = req; // console.log('menuIndexGet', ...Object.entries(query)); if (!query) { return findHandler(req); } const { locale, market, pagination, page, limit } = query; if (typeof market === 'string' && typeof locale === 'string') { // const context = await setMixerContext(req, market, locale); // console.log('menuIndexGet.context', context.market, context.locale, context.routes.length, context.categories.length); if (pagination === 'true') { return findHandler(req); } else { const items = await getCollectionItems(req, options.slug.menu); return ResponseSuccess(items); } } else if (pagination === 'false') { const items = await getCollectionItems(req, options.slug.menu); return ResponseSuccess(items); } return findHandler(req); } catch (error) { console.error('MenuService.menuIndexGet.error', error); return ResponseError(error); } } }); /** * Rest api menu detail get handler. */ export const menuDetailGet = (options)=>({ path: '/:id', method: 'get', handler: async (req)=>{ // const collection = getRequestCollection(req); const { query } = req; if (!query) { return findByIDHandler(req); } // console.log('menuDetailGet', ...Object.entries(query)); const { market, locale } = query; if (!(typeof market === 'string' && typeof locale === 'string')) { return findByIDHandler(req); } // const context = await setMixerContext(req, market, locale); // console.log('menuDetailGet.context', context.market, context.locale, context.routes.length, context.categories.length); try { const id = req.routeParams?.id; const item = await getCollectionItem(req, options.slug.menu, id); return ResponseSuccess(item); } catch (error) { console.error('MenuService.menuDetailGet.error', error); return ResponseError(error); } } }); /** * Decorate record for Mixer when queried by market and locale. */ export const afterMenuReadHook = (collectionConfig)=>async ({ doc, req, context, findMany })=>{ // console.log('afterMenuReadHook', query.locale, query.market, depth); const { market, locale, markets, locales, routes, categories } = context; if (!market || !locale || !markets || !locales || !routes || !categories) { return doc; } const withSchema = await decorateSchema_(doc, collectionConfig.slug); const withRichText = await decorateRichText_(withSchema, collectionConfig.fields, context, req.payload.config); const withMenu = await decorateMenu_(withRichText, context); return withMenu; }; //# sourceMappingURL=menu.service.js.map