import 'package:supabase_flutter/supabase_flutter.dart'; class TeamController { // Acesso ao cliente do Supabase final SupabaseClient _supabase = Supabase.instance.client; // --- STREAM DE EQUIPAS (LER) --- // Retorna uma Lista de Mapas em tempo real Stream>> get teamsStream { final user = _supabase.auth.currentUser; if (user == null) { return const Stream.empty(); } return _supabase .from('teams') .stream(primaryKey: ['id']) // É obrigatório definir a Primary Key para Streams .eq('user_id', user.id) // Filtra apenas as equipas do utilizador logado .order('created_at', ascending: false); } // --- CRIAR EQUIPA --- Future createTeam(String name, String season, String imageUrl) async { final user = _supabase.auth.currentUser; if (user != null) { try { await _supabase.from('teams').insert({ 'name': name, 'season': season, 'image_url': imageUrl, // Garante que na tabela a coluna se chama 'image_url' (snake_case) 'user_id': user.id, // Chave estrangeira para ligar ao utilizador // 'created_at': O Supabase preenche isto sozinho se tiver default: now() }); } catch (e) { print("Erro ao criar equipa: $e"); } } else { print("Erro: Utilizador não autenticado."); } } // --- ELIMINAR EQUIPA --- Future deleteTeam(String docId) async { try { // Se configuraste "ON DELETE CASCADE" no Supabase, isto apaga também os jogadores await _supabase.from('teams').delete().eq('id', docId); } catch (e) { print("Erro ao eliminar: $e"); } } // --- CONTAR JOGADORES --- // No SQL não entramos dentro da equipa. Vamos à tabela 'members' e filtramos pelo team_id. // --- CONTAR JOGADORES (CORRIGIDO) --- Future getPlayerCount(String teamId) async { try { // Correção: O Supabase agora retorna o 'int' diretamente, não um objeto response final int count = await _supabase .from('members') .count(CountOption.exact) // Pede o número exato .eq('team_id', teamId); return count; } catch (e) { print("Erro ao contar jogadores: $e"); return 0; } } }