@opengis/fastify-table
Version:
core-plugins
34 lines (24 loc) • 1.12 kB
JavaScript
/* eslint-disable camelcase */
import pgClients from '../../../plugins/pg/pgClients.js';
export default async function getAppSettings({
pg = pgClients.client, query = {}, params = {}, user = {},
}, reply) {
const t1 = Date.now();
if (!pg) {
return reply.status(500).send('empty pg');
}
if (!pg.pk?.['admin.properties']) {
return reply.status(404).send('properties table not found');
}
if (params.entity === 'user' && !user.uid) {
return reply.status(401).send('unauthorized');
}
const { uid } = user;
const args = params.entity === 'user'
? [user.uid]
: [params.entity || 'app'];
const { rows = [] } = await pg.query('select property_key as key, property_text, property_json from admin.properties where property_entity=$1', args);
const settings = rows.filter(row => (typeof query.keys === 'string' ? query.keys.includes(row.key) : true))
.reduce((acc, { key, property_text, property_json }) => ({ ...acc, [key]: property_text || property_json }), {});
return reply.status(200).send({ time: Date.now() - t1, uid, settings });
}