/
h0tnanny
/
IotPlatform
Обзор
Документация
Войти
/
h0tnanny
/
IotPlatform
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
src/config/database.ts
59 строк
2 KB
h0tnanny
change to ORM
02 фев 2026, 01:37
02 фев 2026, 01:37
0367fb1
Код
Авторство
О чём код?
import { Pool, PoolConfig } from 'pg'; import { drizzle } from 'drizzle-orm/node-postgres'; import * as dotenv from 'dotenv'; // Загружаем переменные окружения dotenv.config(); /** * Конфигурация подключения к PostgreSQL */ const poolConfig: PoolConfig = { host: process.env.DB_HOST || 'localhost', port: parseInt(process.env.DB_PORT || '5432', 10), database: process.env.DB_NAME || 'iot_platform', user: process.env.DB_USER || 'postgres', password: process.env.DB_PASSWORD || 'postgres', max: 20, idleTimeoutMillis: 30000, connectionTimeoutMillis: 2000, }; /** * Пул соединений с PostgreSQL (для миграций и raw SQL при необходимости) */ export const pool = new Pool(poolConfig); /** * Drizzle ORM — основной клиент для работы с БД (защита от SQL-инъекций) */ export const db = drizzle(pool); // Обработка ошибок пула pool.on('error', (err: Error) => { console.error('[Database] Неожиданная ошибка подключения к БД:', err); }); /** * Проверка подключения к базе данных */ export async function checkDatabaseConnection(): Promise<boolean> { try { const client = await pool.connect(); await client.query('SELECT NOW()'); client.release(); console.log('[Database] ✓ Подключение к PostgreSQL установлено'); return true; } catch (error) { console.error('[Database] ✗ Ошибка подключения к PostgreSQL:', error); return false; } } /** * Закрытие всех соединений с БД */ export async function closeDatabaseConnection(): Promise<void> { await pool.end(); console.log('[Database] Соединение с PostgreSQL закрыто'); }