Files
PlayMaker/lib/controllers/game_controller.dart

40 lines
1.3 KiB
Dart

import 'package:supabase_flutter/supabase_flutter.dart';
import '../models/game_model.dart';
class GameController {
final _supabase = Supabase.instance.client;
// 1. LER JOGOS (Stream em Tempo Real)
Stream<List<Game>> get gamesStream {
return _supabase
.from('games')
.stream(primaryKey: ['id'])
.order('game_date', ascending: false) // Mais recentes primeiro
.map((data) => data.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({
'my_team': myTeam,
'opponent_team': opponent,
'season': season,
'my_score': 0,
'opponent_score': 0,
'status': 'Decorrer', // Começa como "Decorrer"
'game_date': DateTime.now().toIso8601String(),
}).select().single(); // .select().single() retorna o objeto criado
return response['id']; // Retorna o UUID gerado pelo Supabase
} catch (e) {
print("Erro ao criar jogo: $e");
return null;
}
}
void dispose() {
// Não é necessário fechar streams do Supabase manualmente aqui
}
}