Package Exports
- @dieugene/users-graph
- @dieugene/users-graph/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@dieugene/users-graph) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
users-graph
Модуль для фиксации связей между пользователями с использованием YDB (Yandex Database).
Описание
Данный модуль предназначен для управления графом связей между пользователями. Он позволяет сохранять информацию о связях между пользователями в базе данных YDB, включая дополнительные метаданные.
Структура таблицы
Модуль работает с таблицей users_graph
в YDB со следующей структурой:
CREATE TABLE users_graph
(
`id` BigSerial NOT NULL,
`from_uuid` Utf8,
`to_uuid` Utf8,
`data` Json,
`created_on` Uint64,
INDEX `from_index` GLOBAL ON (`from_uuid`),
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
);
Поля таблицы
id
- Уникальный идентификатор записи (автоинкремент)from_uuid
- UUID пользователя-источника связиto_uuid
- UUID пользователя-цели связиdata
- JSON объект с дополнительными данными о связиcreated_on
- Временная метка создания записи (Unix timestamp)
Установка
npm install users-graph
Зависимости
@dieugene/ydb-serverless
- для работы с YDB@dieugene/utils
- вспомогательные утилиты@dieugene/key-value-db
- для работы с базой данных ключ-значение
Использование
const usersGraph = require('users-graph');
// Создание связи между пользователями
await usersGraph.set(
'user-uuid-1', // from_uuid
'user-uuid-2', // to_uuid
{ // data (дополнительная информация)
type: 'friend',
strength: 0.8,
note: 'Добавлен как друг'
}
);
API
set(from_uuid, to_uuid, data)
Создает или обновляет связь между пользователями.
Параметры:
from_uuid
(string) - UUID пользователя-источникаto_uuid
(string) - UUID пользователя-целиdata
(object) - JSON объект с дополнительными данными о связи
Возвращает: Promise
Пример:
await usersGraph.set('123e4567-e89b-12d3-a456-426614174000', '987fcdeb-51a2-43d1-b567-123456789abc', {
relationship_type: 'follower',
created_by: 'system',
metadata: {
source: 'mobile_app',
version: '1.2.3'
}
});
Примеры использования
Создание связи "дружба"
await usersGraph.set(
'alice-uuid',
'bob-uuid',
{
type: 'friendship',
mutual: true,
since: '2024-01-15'
}
);
Создание связи "подписка"
await usersGraph.set(
'follower-uuid',
'influencer-uuid',
{
type: 'subscription',
notification_enabled: true,
subscription_level: 'premium'
}
);
Создание связи с метаданными
await usersGraph.set(
'user1-uuid',
'user2-uuid',
{
type: 'business_connection',
company: 'Example Corp',
role: 'partner',
contract_id: 'CONT-2024-001',
priority: 'high'
}
);
Индексы
Таблица имеет глобальный индекс from_index
по полю from_uuid
, что обеспечивает быстрый поиск всех исходящих связей для конкретного пользователя.
Требования
- Node.js >= 14.0.0
- Доступ к YDB (Yandex Database)
- Настроенные переменные окружения для подключения к YDB
Лицензия
MIT