- Deleted: TNAR, demo-event-log, demo-managed-functions, hello-go, hello-node, k8s, notes-python, pg-list-python, simple-node, simple-python - POSTGRES: removed luceUNDnode.tf (commented-out legacy), stress_log_1.txt, funcs_list.py; disabled stress_destroy_apply.sh (PG lifecycle stress has delete_user bug); added README.md - examples/README.md: updated to reflect current state (sless_service + sless_job)
45 lines
1.7 KiB
JavaScript
45 lines
1.7 KiB
JavaScript
// 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();
|
||
}
|
||
};
|