UNPKG

@opengis/fastify-table

Version:

core-plugins

43 lines (34 loc) 1.6 kB
import { applyHook, getTemplate } from '../../../../utils.js'; const sql = `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 = [] } = await pg.query(sql); 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) { const time = Date.now(); const { pg, params, user } = req; const hookData = await applyHook('preForm', { form: params?.form, user }); if (hookData?.message && hookData?.status) { return { message: hookData?.message, status: hookData?.status }; } const form = await getTemplate('form', hookData?.form || params?.form); if (!form) { return { status: 404, message: 'not found' }; } // 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?.form, payload: res, user, }); return res1 || { time: Date.now() - time, form }; }