esta melhor des que comecei
This commit is contained in:
@@ -4,25 +4,34 @@ import '../models/game_model.dart';
|
||||
class GameController {
|
||||
final _supabase = Supabase.instance.client;
|
||||
|
||||
// 1. LER JOGOS (Stream em Tempo Real)
|
||||
Stream<List<Game>> get gamesStream {
|
||||
// 1. LER JOGOS (Com Filtros Opcionais)
|
||||
Stream<List<Game>> getFilteredGames({String? teamFilter, String? seasonFilter}) {
|
||||
return _supabase
|
||||
.from('games') // 1. Fica à escuta da tabela original (Garante o Tempo Real!)
|
||||
.from('games')
|
||||
.stream(primaryKey: ['id'])
|
||||
.asyncMap((event) async {
|
||||
// 2. Sempre que a tabela 'games' mudar (novo jogo, alteração de resultado),
|
||||
// vamos buscar os dados já misturados com as imagens à nossa View.
|
||||
final viewData = await _supabase
|
||||
.from('games_with_logos')
|
||||
.select()
|
||||
.order('game_date', ascending: false);
|
||||
|
||||
// 👇 A CORREÇÃO ESTÁ AQUI: Lê diretamente da tabela 'games'
|
||||
var query = _supabase.from('games').select();
|
||||
|
||||
// Aplica o filtro de Temporada
|
||||
if (seasonFilter != null && seasonFilter.isNotEmpty && seasonFilter != 'Todas') {
|
||||
query = query.eq('season', seasonFilter);
|
||||
}
|
||||
|
||||
// Aplica o filtro de Equipa (Procura em casa ou fora)
|
||||
if (teamFilter != null && teamFilter.isNotEmpty && teamFilter != 'Todas') {
|
||||
query = query.or('my_team.eq.$teamFilter,opponent_team.eq.$teamFilter');
|
||||
}
|
||||
|
||||
// Executa a query com a ordenação por data
|
||||
final viewData = await query.order('game_date', ascending: false);
|
||||
|
||||
// 3. Convertemos para a nossa lista de objetos Game
|
||||
return viewData.map((json) => Game.fromMap(json)).toList();
|
||||
});
|
||||
}
|
||||
|
||||
// 2. CRIAR JOGO
|
||||
// Retorna o ID do jogo criado para podermos navegar para o placar
|
||||
Future<String?> createGame(String myTeam, String opponent, String season) async {
|
||||
try {
|
||||
final response = await _supabase.from('games').insert({
|
||||
@@ -31,18 +40,16 @@ Stream<List<Game>> get gamesStream {
|
||||
'season': season,
|
||||
'my_score': 0,
|
||||
'opponent_score': 0,
|
||||
'status': 'Decorrer', // Começa como "Decorrer"
|
||||
'status': 'Decorrer',
|
||||
'game_date': DateTime.now().toIso8601String(),
|
||||
}).select().single(); // .select().single() retorna o objeto criado
|
||||
}).select().single();
|
||||
|
||||
return response['id']; // Retorna o UUID gerado pelo Supabase
|
||||
return response['id'];
|
||||
} catch (e) {
|
||||
print("Erro ao criar jogo: $e");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
// Não é necessário fechar streams do Supabase manualmente aqui
|
||||
}
|
||||
void dispose() {}
|
||||
}
|
||||
Reference in New Issue
Block a user