Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 41 additions & 5 deletions hasura/functions/tournaments/schedule_tournament_match.sql
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ CREATE OR REPLACE FUNCTION public.schedule_tournament_match(bracket public.tourn
_match_options_id UUID;
_round_best_of int;
_swiss_match_type text;
_max_players_per_lineup int;
BEGIN
IF bracket.match_id IS NOT NULL THEN
RETURN bracket.match_id;
Expand Down Expand Up @@ -138,6 +139,9 @@ CREATE OR REPLACE FUNCTION public.schedule_tournament_match(bracket public.tourn
RETURNING lineup_1_id, lineup_2_id
INTO _lineup_1_id, _lineup_2_id;

SELECT tournament_max_players_per_lineup(tournament)
INTO _max_players_per_lineup;

SELECT tt.captain_steam_id
INTO _captain_steam_id_1
FROM tournament_teams tt
Expand All @@ -149,16 +153,48 @@ CREATE OR REPLACE FUNCTION public.schedule_tournament_match(bracket public.tourn
WHERE tt.id = bracket.tournament_team_id_2;

FOR member IN
SELECT * FROM tournament_team_roster
WHERE tournament_team_id = bracket.tournament_team_id_1
SELECT ttr.*
FROM tournament_team_roster ttr
INNER JOIN tournament_teams tt
ON tt.id = ttr.tournament_team_id
LEFT JOIN team_roster tr
ON tr.team_id = tt.team_id
AND tr.player_steam_id = ttr.player_steam_id
WHERE ttr.tournament_team_id = bracket.tournament_team_id_1
ORDER BY
CASE WHEN ttr.player_steam_id = _captain_steam_id_1 THEN 0 ELSE 1 END,
CASE tr.status
WHEN 'Starter' THEN 1
WHEN 'Substitute' THEN 2
WHEN 'Benched' THEN 3
ELSE 4
END,
ttr.player_steam_id
LIMIT _max_players_per_lineup
LOOP
INSERT INTO match_lineup_players (match_lineup_id, steam_id)
VALUES (_lineup_1_id, member.player_steam_id);
END LOOP;

FOR member IN
SELECT * FROM tournament_team_roster
WHERE tournament_team_id = bracket.tournament_team_id_2
SELECT ttr.*
FROM tournament_team_roster ttr
INNER JOIN tournament_teams tt
ON tt.id = ttr.tournament_team_id
LEFT JOIN team_roster tr
ON tr.team_id = tt.team_id
AND tr.player_steam_id = ttr.player_steam_id
WHERE ttr.tournament_team_id = bracket.tournament_team_id_2
ORDER BY
CASE WHEN ttr.player_steam_id = _captain_steam_id_2 THEN 0 ELSE 1 END,
CASE tr.status
WHEN 'Starter' THEN 1
WHEN 'Substitute' THEN 2
WHEN 'Benched' THEN 3
ELSE 4
END,
ttr.player_steam_id
LIMIT _max_players_per_lineup
LOOP
INSERT INTO match_lineup_players (match_lineup_id, steam_id)
VALUES (_lineup_2_id, member.player_steam_id);
Expand Down Expand Up @@ -200,4 +236,4 @@ CREATE OR REPLACE FUNCTION public.schedule_tournament_match(bracket public.tourn

RETURN _match_id;
END;
$$;
$$;