Skip to content

Commit 7c9c9d6

Browse files
committed
bug: tournament reassigments
1 parent e91066c commit 7c9c9d6

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
CREATE OR REPLACE FUNCTION public.can_reassign_winner(match public.matches, hasura_session json)
2+
RETURNS boolean
3+
LANGUAGE plpgsql STABLE
4+
AS $$
5+
DECLARE
6+
bracket_id uuid;
7+
blocking_downstream int;
8+
BEGIN
9+
IF NOT is_match_organizer(match, hasura_session) THEN
10+
RETURN false;
11+
END IF;
12+
13+
IF match.status NOT IN ('Finished', 'Tie', 'Canceled', 'Forfeit', 'Surrendered') THEN
14+
RETURN false;
15+
END IF;
16+
17+
SELECT id INTO bracket_id
18+
FROM tournament_brackets
19+
WHERE match_id = match.id
20+
LIMIT 1;
21+
22+
IF bracket_id IS NULL THEN
23+
RETURN true;
24+
END IF;
25+
26+
SELECT count(*) INTO blocking_downstream
27+
FROM tournament_brackets tb
28+
LEFT JOIN matches m ON m.id = tb.match_id
29+
WHERE (tb.parent_bracket_id = bracket_id OR tb.loser_parent_bracket_id = bracket_id)
30+
AND m.id IS NOT NULL
31+
AND m.status NOT IN ('Scheduled', 'WaitingForCheckIn', 'Canceled');
32+
33+
RETURN blocking_downstream = 0;
34+
END;
35+
$$;

0 commit comments

Comments
 (0)