-- Script para verificar e corrigir os establishment_id
-- Execute: sudo -u postgres psql -d maktubia_points -f deploy/check-and-fix-establishment-ids.sql

\echo '📋 Verificando estrutura atual dos establishments...'
\echo ''

-- Verificar dados atuais
SELECT 
    'Dados atuais:' as info,
    establishment_id,
    est_id,
    name,
    qr_code,
    created_at
FROM establishments 
ORDER BY created_at DESC
LIMIT 5;

\echo ''
\echo '🔍 Verificando se há foreign keys em outras tabelas que podem ter os IDs originais...'

-- Verificar purchases
SELECT 
    'Purchases com establishment_id:' as info,
    establishment_id,
    COUNT(*) as count
FROM purchases
WHERE establishment_id IS NOT NULL
GROUP BY establishment_id
ORDER BY establishment_id DESC
LIMIT 10;

\echo ''
\echo '💡 Solução: Atualizar establishment_id baseado em created_at DESC'
\echo '   Isso fará com que o registro mais recente tenha o maior ID'
\echo ''

-- Atualizar usando ROW_NUMBER baseado em created_at DESC
-- Começando do maior ID possível (assumindo que há ~21 registros, começamos de 250)
DO $$
DECLARE
    total_count INTEGER;
    start_id INTEGER := 250; -- ID inicial alto
    max_id INTEGER;
BEGIN
    SELECT COUNT(*) INTO total_count FROM establishments;
    RAISE NOTICE '📊 Total de estabelecimentos: %', total_count;
    
    -- Atualizar usando ROW_NUMBER, mas começando de um ID alto
    -- Ordenar por created_at DESC para que o mais recente tenha o maior ID
    WITH numbered AS (
        SELECT 
            est_id,
            (start_id - ROW_NUMBER() OVER (ORDER BY created_at DESC) + 1) as new_id
        FROM establishments
    )
    UPDATE establishments e
    SET establishment_id = (SELECT new_id FROM numbered n WHERE n.est_id = e.est_id);
    
    SELECT MAX(establishment_id) INTO max_id FROM establishments;
    RAISE NOTICE '✅ establishment_id atualizados. Maior ID: %', max_id;
    
    -- Atualizar a sequência para o próximo valor
    PERFORM setval('establishments_establishment_id_seq', max_id);
    RAISE NOTICE '✅ Sequência atualizada para: %', max_id;
END $$;

\echo ''
\echo '📋 Resultado após correção:'
SELECT 
    establishment_id,
    est_id,
    name,
    qr_code,
    created_at
FROM establishments 
ORDER BY created_at DESC
LIMIT 10;

\echo ''
\echo '✅ Correção concluída!'
\echo ''
\echo '⚠️  Se os IDs ainda não corresponderem aos esperados,'
\echo '   você pode precisar atualizar manualmente ou verificar'
\echo '   se há outra fonte para os IDs originais.'












