Files
multy-stub/server/routers/kfu-m-24-1/sber_mobile/supabaseClient.js
2025-06-14 13:36:06 +03:00

86 lines
2.7 KiB
JavaScript

const router = require('express').Router();
const { createClient } = require('@supabase/supabase-js');
const { getSupabaseUrl, getSupabaseKey, getSupabaseServiceKey } = require('./get-constants');
let supabase = null;
let initializationPromise = null;
async function initSupabaseClient() {
console.log('🔄 [Supabase Client] Начинаем инициализацию...');
try {
console.log('🔄 [Supabase Client] Получаем конфигурацию...');
const supabaseUrl = await getSupabaseUrl();
const supabaseAnonKey = await getSupabaseKey();
const supabaseServiceRoleKey = await getSupabaseServiceKey();
if (!supabaseUrl || !supabaseServiceRoleKey) {
throw new Error('Missing required Supabase configuration');
}
supabase = createClient(supabaseUrl, supabaseServiceRoleKey);
return supabase;
} catch (error) {
console.error('❌ [Supabase Client] Ошибка инициализации:', error);
throw error;
}
}
function getSupabaseClient() {
if (!supabase) {
throw new Error('Supabase client is not initialized. Call initSupabaseClient first.');
}
return supabase;
}
// POST /refresh-supabase-client
router.post('/refresh-supabase-client', async (req, res) => {
try {
await initSupabaseClient();
res.json({ success: true, message: 'Supabase client refreshed' });
} catch (error) {
console.error('❌ [Supabase Client] Ошибка обновления:', error);
res.status(500).json({ error: error.message });
}
});
// GET /supabase-client-status
router.get('/supabase-client-status', (req, res) => {
console.log('🔍 [Supabase Client] Проверяем статус клиента...');
const isInitialized = !!supabase;
res.json({
initialized: isInitialized,
clientExists: !!supabase,
timestamp: new Date().toISOString()
});
});
// Инициализация клиента при старте
initializationPromise = (async () => {
try {
await initSupabaseClient();
} catch (error) {
console.error('❌ [Supabase Client] Ошибка инициализации при старте:', error);
// Планируем повторную попытку через 5 секунд
setTimeout(async () => {
try {
await initSupabaseClient();
} catch (retryError) {
console.error('❌ [Supabase Client] Повторная инициализация неудачна:', retryError);
}
}, 5000);
}
})();
module.exports = {
getSupabaseClient,
initSupabaseClient,
supabaseRouter: router,
// Экспортируем промис инициализации для возможности ожидания
initializationPromise
};