UNPKG

@opengis/fastify-table

Version:

core-plugins

52 lines (51 loc) 1.81 kB
import config from "../../../config.js"; import pgClients from "./pgClients.js"; import getPGAsync from "./funcs/getPGAsync.js"; import logger from "../logger/getLogger.js"; function close() { Object.keys(pgClients) .filter((key) => !pgClients[key]?.ending && !pgClients[key]?.ended) .forEach((key) => { console.log("Closing pg client", key); pgClients[key].end(); }); } async function getHeadersPG(req) { if (!req.headers?.token) return null; const validToken = (req.ip === "193.239.152.181" || req.ip === "127.0.0.1" || req.ip.startsWith("192.168.") || config.debug) && req.headers?.token && config.auth?.tokens?.includes?.(req.headers.token); if (validToken && typeof req.headers?.db === "string") { const pg = pgClients[req.headers.db] || (await getPGAsync(req.headers.db)); return pg; } return null; } function plugin(fastify) { fastify.addHook("onRequest", async (req) => { const headersPG = await getHeadersPG(req); const client = await getPGAsync({ ...(config.pg || {}), name: "client" }); req.pg = headersPG || req.pg || client || pgClients.client; if (headersPG) { req.user = { uid: req.headers?.uid }; req.folder = config.folder; req.root = config.root; } }); fastify.addHook("onError", async (req, reply, err) => { if (err.message === "canceling statement due to statement timeout") { logger.file("timeout/request", { method: req.method, url: req.url, referer: req.headers?.referer, stack: err.stack, }); } }); fastify.addHook("onClose", close); } export default plugin;