@@ -21,24 +21,38 @@ class GameModel {
2121 if ( ! gameCode ) gameCode = this . generateGameCode ( ) ;
2222 const initialBoard = chessEngine . initBoard ( ) ;
2323
24- const { data, error } = await supabase
24+ const insertPayload = {
25+ game_code : gameCode ,
26+ game_type : gameType ,
27+ board_state : initialBoard ,
28+ current_turn : "white" ,
29+ status : "waiting" ,
30+ wager_amount : wagerAmount ,
31+ player_white_address : playerWhiteAddress ,
32+ escrow_status : wagerAmount ? "pending" : null ,
33+ time_control_seconds : timeControlSeconds ,
34+ time_control_preset : timeControlPreset ,
35+ time_increment_seconds : timeIncrementSeconds || 0 ,
36+ } ;
37+
38+ let { data, error } = await supabase
2539 . from ( "games" )
26- . insert ( {
27- game_code : gameCode ,
28- game_type : gameType ,
29- board_state : initialBoard ,
30- current_turn : "white" ,
31- status : "waiting" ,
32- wager_amount : wagerAmount ,
33- player_white_address : playerWhiteAddress ,
34- escrow_status : wagerAmount ? "pending" : null ,
35- time_control_seconds : timeControlSeconds ,
36- time_control_preset : timeControlPreset ,
37- time_increment_seconds : timeIncrementSeconds || 0 ,
38- } )
40+ . insert ( insertPayload )
3941 . select ( )
4042 . single ( ) ;
4143
44+ if ( error && error . message && ( error . message . includes ( "time_control_preset" ) || error . message . includes ( "time_increment_seconds" ) ) ) {
45+ delete insertPayload . time_control_preset ;
46+ delete insertPayload . time_increment_seconds ;
47+ const retry = await supabase
48+ . from ( "games" )
49+ . insert ( insertPayload )
50+ . select ( )
51+ . single ( ) ;
52+ data = retry . data ;
53+ error = retry . error ;
54+ }
55+
4256 if ( error ) throw error ;
4357 return data ;
4458 }
0 commit comments