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 };