MCPcopy Create free account
hub / github.com/CFBD/cfb-api / getAdvancedBoxScore

Function getAdvancedBoxScore

app/stats/stats.service.js:888–1447  ·  view source on GitHub ↗
(id)

Source from the content-addressed store, hash-verified

886 };
887
888 const getAdvancedBoxScore = async (id) => {
889 const teamTask = db.any(
890 `
891 WITH havoc AS (
892 WITH fumbles AS (
893 SELECT t.school, COALESCE(SUM(CAST(s.stat AS NUMERIC)), 0.0) AS fumbles
894 FROM game AS g
895 INNER JOIN game_team AS gt ON g.id = gt.game_id
896 INNER JOIN team AS t ON gt.team_id = t.id
897 LEFT JOIN game_player_stat AS s ON s.game_team_id = gt.id AND s.type_id = 4 AND s.category_id = 10
898 WHERE g.id = $1
899 GROUP BY t.school
900 )
901 SELECT t.school,
902 (COALESCE(SUM(CAST(s.stat AS NUMERIC)), 0.0) + fumbles) AS total_havoc,
903 COALESCE(SUM(CAST(s.stat AS NUMERIC)) FILTER (WHERE s.type_id IN (16,24)), 0.0) AS db_havoc,
904 (COALESCE(SUM(CAST(s.stat AS NUMERIC)) FILTER (WHERE s.type_id = 21), 0.0) + f.fumbles) AS front_seven_havoc
905 FROM game AS g
906 INNER JOIN game_team AS gt ON g.id = gt.game_id
907 INNER JOIN game_team AS gt2 ON g.id = gt2.game_id AND gt.id <> gt2.id
908 INNER JOIN team AS t ON gt.team_id = t.id
909 INNER JOIN game_team_stat AS s ON s.game_team_id = gt.id AND s.type_id IN (16,21,24)
910 LEFT JOIN fumbles AS f ON t.school <> f.school
911 WHERE g.id = $1
912 GROUP BY t.school, f.fumbles
913 ), plays AS (
914 SELECT g.id,
915 g.season,
916 g.week,
917 t.school,
918 g.excitement,
919 gt.win_prob,
920 gt.home_away AS home_away,
921 gt.points AS points,
922 gt.winner AS winner,
923 CASE
924 WHEN p.down = 2 AND p.distance >= 8 THEN 'passing'
925 WHEN p.down IN (3,4) AND p.distance >= 5 THEN 'passing'
926 ELSE 'standard'
927 END AS down_type,
928 CASE
929 WHEN p.play_type_id IN (20,26,34,36,37,38,39,63) THEN false
930 WHEN p.scoring = true THEN true
931 WHEN p.down = 1 AND (CAST(p.yards_gained AS NUMERIC) / p.distance) >= 0.5 THEN true
932 WHEN p.down = 2 AND (CAST(p.yards_gained AS NUMERIC) / p.distance) >= 0.7 THEN true
933 WHEN p.down IN (3,4) AND (p.yards_gained >= p.distance) THEN true
934 ELSE false
935 END AS success,
936 CASE
937 WHEN p.play_type_id IN (3,4,6,7,24,26,36,51,67) THEN 'Pass'
938 WHEN p.play_type_id IN (5,9,29,39,68) THEN 'Rush'
939 ELSE 'Other'
940 END AS play_type,
941 CASE
942 WHEN p.period = 2 AND p.scoring = false AND ABS(p.home_score - p.away_score) > 38 THEN true
943 WHEN p.period = 3 AND p.scoring = false AND ABS(p.home_score - p.away_score) > 28 THEN true
944 WHEN p.period = 4 AND p.scoring = false AND ABS(p.home_score - p.away_score) > 22 THEN true
945 WHEN p.period = 2 AND p.scoring = true AND ABS(p.home_score - p.away_score) > 45 THEN true

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected