diff --git a/README.md b/README.md index 14f8663..a7601bd 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,5 @@ Simple Node.js CRUD app that writes to `nubes_test_table` and renders a small HTML UI. If the input is empty, it inserts "Node did it". + +Примечание: таблица создается автоматически, а дубликаты подряд отсекаются по таймауту. diff --git a/server.js b/server.js index 680fdb4..d8c0fea 100644 --- a/server.js +++ b/server.js @@ -2,6 +2,7 @@ const http = require("http"); const { URL } = require("url"); const { Pool } = require("pg"); +// Конфигурация Postgres, DATABASE_URL имеет приоритет. function buildPgConfig() { if (process.env.DATABASE_URL) { return { @@ -20,14 +21,17 @@ function buildPgConfig() { }; } +// Общий пул подключений. const pool = new Pool(buildPgConfig()); +// Таблица для демо создается автоматически. async function ensureTable() { await pool.query( "CREATE TABLE IF NOT EXISTS nubes_test_table (id SERIAL PRIMARY KEY, test_data TEXT, created_at TIMESTAMP DEFAULT NOW())" ); } +// Простой парсер application/x-www-form-urlencoded. function parseForm(body) { return body .split("&") @@ -38,6 +42,7 @@ function parseForm(body) { }, {}); } +// Рендер HTML-страницы с CRUD-формами. function renderPage(rows, error) { const errorHtml = error ? `
${error}
` : ""; const rowsHtml = rows @@ -118,6 +123,7 @@ function renderPage(rows, error) {