JSPM

@dieugene/users-graph

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 5
  • Score
    100M100P100Q26433F
  • License MIT

Модуль для фиксации связей между пользователями с использованием YDB

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