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() { try { 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) { 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) { res.status(500).json({ error: error.message }); } }); // GET /supabase-client-status router.get('/supabase-client-status', (req, res) => { const isInitialized = !!supabase; res.json({ initialized: isInitialized, clientExists: !!supabase, timestamp: new Date().toISOString() }); }); // Инициализация клиента при старте initializationPromise = (async () => { try { await initSupabaseClient(); } catch (error) { // Планируем повторную попытку через 5 секунд setTimeout(async () => { try { await initSupabaseClient(); } catch (retryError) { console.error('❌ [Supabase Client] Повторная инициализация неудачна:', retryError); } }, 5000); } })(); module.exports = { getSupabaseClient, initSupabaseClient, supabaseRouter: router, initializationPromise };