UNPKG

@opengis/fastify-table

Version:

core-plugins

69 lines (68 loc) 2.37 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, }); if (type === "form" && data && !data?.schema) { return { schema: data }; } return data?.html || data || `template not found "${tokenData.form || name}"`; }