@dieugene/sessions
v2.0.6
Published
Session management module for YDB (Yandex Database) with automatic timeout handling and CRUD operations
Readme
@dieugene/sessions
Модуль для управления сессиями в YDB (Yandex Database) с автоматическим контролем таймаутов и CRUD операциями.
Установка
npm install @dieugene/sessionsТребования
- Node.js >= 14.0.0
- Настроенная переменная окружения
ADMIN_YDB_ADDRESSилиYDB_ADDRESSс адресом YDB
Использование
const sessions = require('@dieugene/sessions');
// Создание новой сессии
await sessions.start('session-id', { userId: 123, data: 'example' });
// Получение данных сессии
const sessionData = await sessions.get('session-id');
// Обновление данных сессии
await sessions.set('session-id', { userId: 123, data: 'updated' });
// Проверка завершена ли сессия
const isFinished = await sessions.is_finished('session-id');
// Завершение сессии
await sessions.finish('session-id');API
start(id, data)
Создает новую сессию или обновляет существующую.
Параметры:
id(string) - Уникальный идентификатор сессииdata(object) - Данные сессии в формате JSON
Возвращает: Promise<void>
get(id)
Получает данные активной сессии.
Параметры:
id(string) - Идентификатор сессии
Возвращает: Promise<object|undefined> - Данные сессии или undefined, если сессия не найдена или завершена
set(id, data)
Обновляет данные существующей сессии.
Параметры:
id(string) - Идентификатор сессииdata(object) - Новые данные сессии
Возвращает: Promise<void>
is_finished(id)
Проверяет, завершена ли сессия. Автоматически завершает сессии, которые превысили таймаут (5 минут).
Параметры:
id(string) - Идентификатор сессии
Возвращает: Promise<boolean> - true, если сессия завершена или не существует
finish(id)
Принудительно завершает сессию.
Параметры:
id(string) - Идентификатор сессии
Возвращает: Promise<boolean> - всегда true
Схема таблицы
Модуль ожидает наличие таблицы sessions со следующей структурой:
CREATE TABLE sessions
(
`id` Utf8,
`created_on` Uint64,
`is_finished` Bool DEFAULT false,
`data` Json DEFAULT "{}",
PRIMARY KEY (`id`)
)
WITH (
AUTO_PARTITIONING_BY_SIZE = ENABLED,
AUTO_PARTITIONING_BY_LOAD = DISABLED,
AUTO_PARTITIONING_PARTITION_SIZE_MB = 2048,
AUTO_PARTITIONING_MIN_PARTITIONS_COUNT = 1,
KEY_BLOOM_FILTER = DISABLED
);
Особенности
- Автоматический таймаут: Сессии автоматически завершаются через 5 минут (300000 мс) бездействия
- Обработка ошибок: Все ошибки базы данных логируются в консоль без прерывания выполнения
- JSON данные: Данные сессии хранятся в формате JSON и автоматически парсятся при получении
Зависимости
@dieugene/ydb-serverless- Для работы с YDB@dieugene/utils- Утилиты для работы с массивами
Переменные окружения
Начиная с версии 2.0.0 модуль для работы с этой БД ориентируется на переменную ADMIN_YDB_ADDRESS, а в случае ее отсутствия – на переменную YDB_ADDRESS.
ADMIN_YDB_ADDRESS- Приоритетный адрес YDB для подключенияYDB_ADDRESS- Резервный адрес YDB для подключения (используется если ADMIN_YDB_ADDRESS не задана)
Лицензия
ISC
Автор
Eugene Ditkovsky
