getpgdata: замена Flask на Node.js (Express + pg) приложение для доступа к PostgreSQL

This commit is contained in:
naeel
2026-08-18 18:14:33 +04:00
parent 5c5e11c5a8
commit b061dcd774
16 changed files with 1379 additions and 439 deletions
+16 -17
View File
@@ -1,12 +1,12 @@
# getpgdata
Flask-приложение для доступа к PostgreSQL (managed k8s, internal-only).
Node.js приложение для доступа к PostgreSQL (managed k8s, internal-only).
Развёртывается на платформе Nubes как Python managed service (структура `site/app.py`).
Развёртывается на платформе Nubes как NodeJS managed service (аналогично ipwhitelist-app).
## Возможности
- Главная — состояние подключения и список таблиц (не системные схемы)
- `GET /` — состояние подключения и список таблиц (не системные схемы)
- `GET /table?schema=public&name=<table>` — просмотр содержимого таблицы с пагинацией
- `POST /query` — SQL-консоль (read-only, только `SELECT`)
- `GET /healthz` — liveness-проба для k8s
@@ -15,16 +15,15 @@ Flask-приложение для доступа к PostgreSQL (managed k8s, int
```
getpgdata/
├── requirements.txt
── site/
├── app.py
── static/
│ └── style.css
── templates/
├── index.html
├── table.html
├── query.html
└── error.html
├── package.json
── server.js # точка входа (Express)
├── public/
── style.css
└── views/
── index.ejs
├── table.ejs
├── query.ejs
└── error.ejs
```
## Переменные окружения (jsonEnv)
@@ -37,10 +36,10 @@ getpgdata/
"DB_USER": "super",
"DB_PASS": "<secret>",
"DB_SSLMODE": "disable",
"DB_CONNECT_TIMEOUT": "5",
"DB_CONNECT_TIMEOUT": "5000",
"QUERY_MAX_ROWS": "200",
"APP_ENV": "production",
"FLASK_DEBUG": "false"
"PORT": "5000"
}
```
@@ -50,8 +49,8 @@ getpgdata/
## Локальный запуск
```bash
pip install -r requirements.txt
DB_HOST=<host> DB_USER=<user> DB_PASS=<pass> python site/app.py
npm install
DB_HOST=<host> DB_USER=<user> DB_PASS=<pass> npm start
```
Если БД недоступна — приложение стартует и показывает ошибку на странице,