UNPKG

@opengis/fastify-table

Version:

core-plugins

47 lines (46 loc) 1.98 kB
import { applyHook, getTemplate, pgClients } from "../../../../utils.js"; const q = `select property_key as key, property_json as json, property_int as int, property_text as text from admin.properties where 1=1`; async function getSettings({ pg }) { const rows = pg?.pk?.["admin.properties"] ? await pg.query(q).then((el) => el.rows || []) : []; const data = rows.reduce((acc, curr) => Object.assign(acc, { [curr.key]: curr.json || curr.int || curr.text }), {}); return data; } export default async function formFunction(req, reply) { const time = Date.now(); const { pg = pgClients.client, params, user } = req; const hookData = (await applyHook("preForm", { form: params?.name, user, })); if (hookData?.message && hookData?.status) { const response = hookData.status >= 400 ? { error: hookData.message, code: hookData.status } : hookData.message; return reply.status(hookData.status).send(response); } const form = await getTemplate("form", hookData?.form || params?.name); if (!form) { return reply.status(404).send({ error: "form not found", code: 404 }); } // replace settings const arr = JSON.stringify(form).match(/{{settings.([^}]*)}}/g); if (arr?.length) { const string = JSON.stringify(form); const settings = await getSettings({ pg }); const match = arr.reduce((acc, curr) => Object.assign(acc, { [curr]: settings[curr.replace(/^{{settings./g, "").replace(/}}$/, "")], }), {}); const res = Object.keys(match).reduce((s, m) => s.replace(m, match[m]), string); return { time: Date.now() - time, form: JSON.parse(res) }; } const res = { time: Date.now() - time, form }; const res1 = await applyHook("afterForm", { form: hookData?.form || params?.name, payload: res, user, }); return res1 || { time: Date.now() - time, form }; }