// 2026-03-18 // pg_info.js — NodeJS-функция: проверка работы JS runtime + чтение мета-данных БД. // Подключается к PostgreSQL через пакет pg, возвращает версию сервера и счётчик строк. // Демонстрирует: nodejs20 runtime, npm-зависимость (package.json), PG из JS. // // ENV (те же что у python-функций): // PGHOST, PGPORT, PGDATABASE, PGUSER, PGPASSWORD, PGSSLMODE // // Entrypoint: pg_info.info 'use strict'; const { Client } = require('pg'); exports.info = async (event) => { const client = new Client({ host: process.env.PGHOST, port: parseInt(process.env.PGPORT || '5432'), database: process.env.PGDATABASE, user: process.env.PGUSER, password: process.env.PGPASSWORD, // pg-пакет требует явного ssl-объекта; rejectUnauthorized: false — т.к. // self-signed cert на nubes managed PG, но канал всё равно шифруется. ssl: process.env.PGSSLMODE === 'require' ? { rejectUnauthorized: false } : false, }); await client.connect(); try { const [versionRes, countRes] = await Promise.all([ client.query('SELECT version() AS v'), client.query('SELECT COUNT(*) AS cnt FROM terraform_demo_table'), ]); return { runtime: 'nodejs20', node_version: process.version, pg_version: versionRes.rows[0].v, table_rows: parseInt(countRes.rows[0].cnt, 10), code_version: 'v2-agent-test', }; } finally { await client.end(); } };