import 'package:supabase_flutter/supabase_flutter.dart'; class TeamController { // Instância do cliente Supabase final _supabase = Supabase.instance.client; // 1. STREAM (Realtime) // Adicionei o .map() no final para garantir que o Dart entende que é uma List Stream>> get teamsStream { return _supabase .from('teams') .stream(primaryKey: ['id']) .order('name', ascending: true) .map((data) => List>.from(data)); } // 2. CRIAR // Alterei imageUrl para String? (pode ser nulo) para evitar erros se não houver imagem Future createTeam(String name, String season, String? imageUrl) async { try { await _supabase.from('teams').insert({ 'name': name, 'season': season, 'image_url': imageUrl, 'is_favorite': false, }); print("✅ Equipa guardada no Supabase!"); } catch (e) { print("❌ Erro ao criar: $e"); } } // 3. ELIMINAR Future deleteTeam(String id) async { try { await _supabase.from('teams').delete().eq('id', id); } catch (e) { print("❌ Erro ao eliminar: $e"); } } // 4. FAVORITAR Future toggleFavorite(String teamId, bool currentStatus) async { try { await _supabase .from('teams') .update({'is_favorite': !currentStatus}) // Inverte o valor .eq('id', teamId); } catch (e) { print("❌ Erro ao favoritar: $e"); } } // 5. CONTAR JOGADORES // CORRIGIDO: A sintaxe antiga dava erro. O método .count() é o correto agora. Future getPlayerCount(String teamId) async { try { final count = await _supabase .from('members') .count() // Retorna diretamente o número inteiro .eq('team_id', teamId); return count; } catch (e) { print("Erro ao contar jogadores: $e"); return 0; } } // Mantemos o dispose vazio para não quebrar a chamada na TeamsPage void dispose() {} }