Files
DLE/backend/services/rpcProviderService.js
Alex e2ebe7e8aa 🔧 Исправление отображения данных DLE из блокчейна
 Основные изменения:
- Исправлен дублирование /api в URL запросов к бэкенду
- Добавлен новый API endpoint /api/blockchain/read-dle-info для чтения данных из блокчейна
- Исправлено отображение количества участников (participantCount вместо initialPartners.length)
- Обновлен ManagementView.vue для чтения данных из блокчейна вместо JSON файлов
- Добавлены утилиты для чтения данных DLE из блокчейна
- Исправлены координаты в форме деплоя (сохранение в localStorage)
- Добавлен индикатор прогресса деплоя с редиректом на /management

🔧 Технические детали:
- Создан backend/routes/blockchain.js с endpoint для чтения DLE данных
- Обновлен backend/app.js для регистрации нового маршрута
- Исправлен импорт axios в ManagementView.vue (используется настроенный экземпляр api)
- Добавлены скрипты utils/read-dle-info.js и utils/get-rpc-url.js
- Обновлен скрипт деплоя для сохранения всех данных в блокчейн

🎯 Результат:
- Данные DLE теперь читаются напрямую из блокчейна
- Правильное отображение координат и количества участников
- Устранены ошибки 404 при запросах к API
2025-08-04 21:04:16 +03:00

77 lines
2.7 KiB
JavaScript

/**
* Copyright (c) 2024-2025 Тарабанов Александр Викторович
* All rights reserved.
*
* This software is proprietary and confidential.
* Unauthorized copying, modification, or distribution is prohibited.
*
* For licensing inquiries: info@hb3-accelerator.com
* Website: https://hb3-accelerator.com
* GitHub: https://github.com/HB3-ACCELERATOR
*/
const encryptedDb = require('./encryptedDatabaseService');
async function getAllRpcProviders() {
const providers = await encryptedDb.getData('rpc_providers', {}, null, 'id');
return providers;
}
async function saveAllRpcProviders(rpcConfigs) {
// Удаляем все существующие провайдеры
await encryptedDb.deleteData('rpc_providers', {});
// Сохраняем новые провайдеры
for (const cfg of rpcConfigs) {
await encryptedDb.saveData('rpc_providers', {
network_id: cfg.networkId,
rpc_url: cfg.rpcUrl,
chain_id: cfg.chainId || null
});
}
}
async function upsertRpcProvider(cfg) {
// Проверяем, существует ли провайдер
const existing = await encryptedDb.getData('rpc_providers', { network_id: cfg.networkId }, 1);
if (existing.length > 0) {
// Обновляем существующий провайдер
await encryptedDb.saveData('rpc_providers', {
rpc_url: cfg.rpcUrl,
chain_id: cfg.chainId || null
}, {
network_id: cfg.networkId
});
} else {
// Создаем новый провайдер
await encryptedDb.saveData('rpc_providers', {
network_id: cfg.networkId,
rpc_url: cfg.rpcUrl,
chain_id: cfg.chainId || null
});
}
}
async function deleteRpcProvider(networkId) {
await encryptedDb.deleteData('rpc_providers', { network_id: networkId });
}
async function getRpcUrlByNetworkId(networkId) {
const providers = await encryptedDb.getData('rpc_providers', { network_id: networkId }, 1);
return providers[0]?.rpc_url || null;
}
async function getRpcUrlByChainId(chainId) {
console.log(`[RPC Service] Поиск RPC URL для chain_id: ${chainId}`);
const providers = await encryptedDb.getData('rpc_providers', { chain_id: chainId }, 1);
console.log(`[RPC Service] Найдено провайдеров: ${providers.length}`);
if (providers.length > 0) {
console.log(`[RPC Service] Найден RPC URL: ${providers[0].rpc_url}`);
} else {
console.log(`[RPC Service] RPC URL для chain_id ${chainId} не найден`);
}
return providers[0]?.rpc_url || null;
}
module.exports = { getAllRpcProviders, saveAllRpcProviders, upsertRpcProvider, deleteRpcProvider, getRpcUrlByNetworkId, getRpcUrlByChainId };