UNPKG

@opengis/fastify-table

Version:

core-plugins

52 lines (43 loc) 2.01 kB
/* eslint-disable no-param-reassign */ import { config, applyHook, getTemplate, getToken, setToken, handlebarsSync, } from '../../../../utils.js'; function formatSchema(schema, user, opt) { function parseDataTables(obj) { if (obj?.add) { const obj1 = obj.add?.obj?.includes('{{') && opt ? handlebarsSync.compile(obj.add.obj)(opt) : obj.add?.obj; if (obj.add?.obj) obj.add.obj = obj1; const [token] = setToken({ ids: [JSON.stringify({ ...obj.add, table: obj.add?.table || obj.add?.model })], uid: user.uid, array: 1, }); Object.assign(obj.add, { token, api: `${config.prefix || '/api'}/table/${token}` }); } else if (obj?.type === 'DataTable' && obj.colModel?.length) { obj.colModel.forEach(parseDataTables); } } Object.keys(schema || {}).map(key => ({ key, ...schema[key] })).forEach(parseDataTables); } export default async function getTemplateApi(req) { const { user } = req || {}; const { params = {} } = req; const { type, name } = params; const tokenData = await getToken({ token: name, uid: user?.uid, json: 1 }) || {}; const hookData = await applyHook('preTemplate', { name: tokenData.name || name, type, user }); if (hookData?.message && hookData?.status) return hookData; const data = await getTemplate(type, hookData?.name || tokenData.form || name); if (data && tokenData.obj) { const obj = tokenData.obj.split('#').reduce((p, el) => ({ ...p, [el.split('=')[0]]: el.split('=')[1] }), {}); Object.assign(data, { obj }); } if (type === 'form' && user?.uid) { const schema = data?.schema || data; formatSchema(schema, user, data?.obj); } await applyHook('afterTemplate', { name, type, data, user, }); return data?.html || data || `template not found "${tokenData.form || name}"`; }