-
Notifications
You must be signed in to change notification settings - Fork 0
Prod deploy for new reports portal #65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
7b4b692
83609e3
67286d6
46935fe
867bf8a
4df9eec
5dc144e
820da9e
3c03155
5a704df
0072f8a
857eb1e
690f73e
45ecf70
5dc70a5
2c66f3f
7107090
c659c76
4934817
c8f15a0
1388a4a
f1821d3
e139072
f5a8966
8e74b32
9a0c947
24f4dc7
505c706
64396b5
d120cfa
be6f298
19b2e60
c65e92c
b3c58ae
f320ebc
e5771b2
dd31672
7969839
251cec2
30f17be
ed140cc
c0df2f7
48187fd
7504b98
649bc5b
efe0f29
60c1ff0
e64cb12
28e16a8
9118a9f
f3100b3
2193749
5a91329
01abc54
a4c6025
eeab26e
47a02d9
66dc60b
280c2fd
6ad9e0c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,60 @@ | ||
| WITH challenge_context AS ( | ||
| SELECT c.id | ||
| FROM challenges."Challenge" AS c | ||
| WHERE c.id = $1::text | ||
| ), | ||
| registered_members AS MATERIALIZED ( | ||
| SELECT | ||
| res."memberId", | ||
| MAX(res."memberHandle") AS "memberHandle" | ||
| FROM challenge_context AS cc | ||
| JOIN resources."Resource" AS res | ||
| ON res."challengeId" = cc.id | ||
| JOIN resources."ResourceRole" AS rr | ||
| ON rr.id = res."roleId" | ||
| AND rr.name = 'Submitter' | ||
| GROUP BY res."memberId" | ||
| ) | ||
| SELECT | ||
| COALESCE( | ||
| u.user_id::bigint, | ||
| CASE | ||
| WHEN rm."memberId" ~ '^[0-9]+$' THEN rm."memberId"::bigint | ||
| ELSE NULL | ||
| END | ||
| ) AS "userId", | ||
| COALESCE( | ||
| NULLIF(TRIM(u.handle), ''), | ||
| NULLIF(TRIM(mem.handle), ''), | ||
| rm."memberHandle" | ||
| ) AS "handle", | ||
| COALESCE(e.address, NULLIF(TRIM(mem.email), '')) AS "email", | ||
| COALESCE( | ||
| comp_code.name, | ||
| comp_id.name, | ||
| home_code.name, | ||
| home_id.name, | ||
| NULLIF(TRIM(mem."competitionCountryCode"), ''), | ||
| NULLIF(TRIM(mem."homeCountryCode"), '') | ||
| ) AS "country" | ||
| FROM registered_members AS rm | ||
| LEFT JOIN identity."user" AS u | ||
| ON rm."memberId" ~ '^[0-9]+$' | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [💡 |
||
| AND u.user_id = rm."memberId"::numeric | ||
| LEFT JOIN identity.email AS e | ||
| ON e.user_id = u.user_id | ||
| AND e.primary_ind = 1 | ||
| LEFT JOIN members."member" AS mem | ||
| ON rm."memberId" ~ '^[0-9]+$' | ||
| AND mem."userId" = rm."memberId"::bigint | ||
| LEFT JOIN lookups."Country" AS home_code | ||
| ON UPPER(home_code."countryCode") = UPPER(mem."homeCountryCode") | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [ |
||
| LEFT JOIN lookups."Country" AS home_id | ||
| ON UPPER(home_id.id) = UPPER(mem."homeCountryCode") | ||
| LEFT JOIN lookups."Country" AS comp_code | ||
| ON UPPER(comp_code."countryCode") = UPPER(mem."competitionCountryCode") | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [ |
||
| LEFT JOIN lookups."Country" AS comp_id | ||
| ON UPPER(comp_id.id) = UPPER(mem."competitionCountryCode") | ||
| ORDER BY | ||
| "handle" ASC NULLS LAST, | ||
| "userId" ASC NULLS LAST; | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -8,8 +8,11 @@ filtered_challenges AS MATERIALIZED ( | |
| SELECT | ||
| c.id, | ||
| c.status, | ||
| ct.name AS "challengeType", | ||
| lp."actualEndDate" AS "challengeCompletedDate" | ||
| FROM challenges."Challenge" c | ||
| JOIN challenges."ChallengeType" ct | ||
| ON ct.id = c."typeId" | ||
| LEFT JOIN LATERAL ( | ||
| SELECT cp."actualEndDate" | ||
| FROM challenges."ChallengePhase" cp | ||
|
|
@@ -40,8 +43,8 @@ filtered_challenges AS MATERIALIZED ( | |
| ) | ||
| -- filter by challenge status | ||
| AND ($3::text[] IS NULL OR c.status::text = ANY($3::text[])) | ||
| -- exclude task challenge types from this report | ||
| AND COALESCE(c."taskIsTask", false) = false | ||
| -- include only challenge types supported by this report | ||
| AND ct.name IN ('Challenge', 'Marathon Match', 'First2Finish') | ||
| -- filter by completion date bounds on the latest challenge phase end date | ||
| AND ( | ||
| ($4::timestamptz IS NULL AND $5::timestamptz IS NULL) | ||
|
|
@@ -57,6 +60,7 @@ registrants AS MATERIALIZED ( | |
| SELECT | ||
| fc.id AS "challengeId", | ||
| fc.status AS "challengeStatus", | ||
| fc."challengeType", | ||
| fc."challengeCompletedDate", | ||
| registrant."memberId", | ||
| registrant."registrantHandle" | ||
|
|
@@ -71,23 +75,29 @@ registrants AS MATERIALIZED ( | |
| AND res."roleId" = sr.id | ||
| GROUP BY res."memberId" | ||
| ) registrant ON true | ||
| LIMIT 1000 | ||
| ) | ||
| SELECT | ||
| r."challengeId", | ||
| r."challengeStatus", | ||
| r."challengeType", | ||
| win."winnerHandle", | ||
| COALESCE(sub."isWinner", false) AS "isWinner", | ||
| ( | ||
| COALESCE(win."isWinner", false) | ||
| OR COALESCE(sub."isWinner", false) | ||
| ) AS "isWinner", | ||
| CASE | ||
| WHEN r."challengeStatus" = 'COMPLETED' | ||
| THEN r."challengeCompletedDate" | ||
| ELSE null | ||
| END AS "challengeCompletedDate", | ||
| r."registrantHandle", | ||
| sub."registrantFinalScore" | ||
| COALESCE(sub."registrantFinalScore", sum."registrantFinalScore") | ||
| AS "registrantFinalScore" | ||
| FROM registrants r | ||
| LEFT JOIN LATERAL ( | ||
| SELECT MAX(cw.handle) AS "winnerHandle" | ||
| SELECT | ||
| MAX(cw.handle) AS "winnerHandle", | ||
| COUNT(*) > 0 AS "isWinner" | ||
| FROM challenges."ChallengeWinner" cw | ||
| WHERE cw."challengeId" = r."challengeId" | ||
| AND cw."userId"::text = r."memberId" | ||
|
|
@@ -96,8 +106,19 @@ LEFT JOIN LATERAL ( | |
| LEFT JOIN LATERAL ( | ||
| SELECT | ||
| BOOL_OR(s.placement = 1) AS "isWinner", | ||
| ROUND(MAX(s."finalScore"), 2) AS "registrantFinalScore" | ||
| COALESCE(ROUND(MAX(s."finalScore")::numeric, 2), ROUND(MAX(s."initialScore")::numeric, 2)) AS "registrantFinalScore" | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [ |
||
| FROM reviews.submission s | ||
| WHERE s."challengeId" = r."challengeId" | ||
| AND s."memberId" = r."memberId" | ||
| ) sub ON true; | ||
| ) sub ON true | ||
| LEFT JOIN LATERAL ( | ||
| SELECT | ||
| ROUND(MAX(rs."aggregateScore")::numeric, 2) AS "registrantFinalScore" | ||
| FROM reviews."reviewSummation" rs | ||
| WHERE rs."submissionId" IN ( | ||
| SELECT id from reviews.submission | ||
| WHERE "challengeId" = r."challengeId" | ||
| AND "memberId" = r."memberId" | ||
| ) | ||
| ) sum ON true; | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [ |
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,166 @@ | ||
| WITH challenge_context AS ( | ||
| SELECT | ||
| c.id, | ||
| (ct.name = 'Marathon Match') AS is_marathon_match | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [💡 |
||
| FROM challenges."Challenge" AS c | ||
| JOIN challenges."ChallengeType" AS ct | ||
| ON ct.id = c."typeId" | ||
| WHERE c.id = $1::text | ||
| ), | ||
| submission_metrics AS ( | ||
| SELECT | ||
| s.id AS submission_id, | ||
| s."memberId", | ||
| COALESCE(s."submittedDate", s."createdAt") AS submission_timestamp, | ||
| COALESCE( | ||
| final_review."aggregateScore", | ||
| s."finalScore"::double precision, | ||
| s."initialScore"::double precision | ||
| ) AS standard_score, | ||
| provisional_review.provisional_score, | ||
| final_review."aggregateScore" AS final_score_raw | ||
| FROM challenge_context AS cc | ||
| JOIN reviews."submission" AS s | ||
| ON s."challengeId" = cc.id | ||
| AND s."memberId" IS NOT NULL | ||
| LEFT JOIN LATERAL ( | ||
| SELECT rs."aggregateScore" | ||
| FROM reviews."reviewSummation" AS rs | ||
| WHERE rs."submissionId" = s.id | ||
| AND COALESCE(rs."isFinal", TRUE) = TRUE | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [ |
||
| AND rs."isProvisional" IS DISTINCT FROM TRUE | ||
| ORDER BY COALESCE(rs."reviewedDate", rs."createdAt") DESC NULLS LAST, rs.id DESC | ||
| LIMIT 1 | ||
| ) AS final_review ON TRUE | ||
| LEFT JOIN LATERAL ( | ||
| SELECT rs."aggregateScore" AS provisional_score | ||
| FROM reviews."reviewSummation" AS rs | ||
| WHERE rs."submissionId" = s.id | ||
| AND rs."isProvisional" IS TRUE | ||
| ORDER BY COALESCE(rs."reviewedDate", rs."createdAt") DESC NULLS LAST, rs.id DESC | ||
| LIMIT 1 | ||
| ) AS provisional_review ON TRUE | ||
| ), | ||
| submitter_members AS MATERIALIZED ( | ||
| SELECT | ||
| cc.is_marathon_match, | ||
| res."memberId", | ||
| MAX(res."memberHandle") AS "memberHandle" | ||
| FROM challenge_context AS cc | ||
| JOIN resources."Resource" AS res | ||
| ON res."challengeId" = cc.id | ||
| JOIN resources."ResourceRole" AS rr | ||
| ON rr.id = res."roleId" | ||
| AND rr.name = 'Submitter' | ||
| JOIN submission_metrics AS smx | ||
| ON smx."memberId" = res."memberId" | ||
| GROUP BY | ||
| cc.is_marathon_match, | ||
| res."memberId" | ||
| ), | ||
| standard_member_scores AS ( | ||
| SELECT | ||
| sm."memberId", | ||
| ROUND(MAX(sm.standard_score)::numeric, 2) AS "submissionScore" | ||
| FROM submission_metrics AS sm | ||
| GROUP BY sm."memberId" | ||
| ), | ||
| mm_latest_submission_scores AS ( | ||
| SELECT DISTINCT ON (sm."memberId") | ||
| sm."memberId", | ||
| sm.provisional_score AS provisional_score_raw, | ||
| sm.final_score_raw, | ||
| COALESCE(sm.final_score_raw, sm.provisional_score) AS effective_score_raw, | ||
| sm.submission_timestamp | ||
| FROM submission_metrics AS sm | ||
| ORDER BY | ||
| sm."memberId", | ||
| sm.submission_timestamp DESC NULLS LAST, | ||
| sm.submission_id DESC | ||
| ), | ||
| mm_ranked_scores AS ( | ||
| SELECT | ||
| mlss."memberId", | ||
| CASE | ||
| WHEN mlss.provisional_score_raw IS NULL THEN NULL | ||
| ELSE ROUND(mlss.provisional_score_raw::numeric, 2) | ||
| END AS "provisionalScore", | ||
| CASE | ||
| WHEN mlss.effective_score_raw IS NULL THEN NULL | ||
| ELSE ROW_NUMBER() OVER ( | ||
| ORDER BY | ||
| mlss.effective_score_raw DESC NULLS LAST, | ||
| mlss.submission_timestamp ASC NULLS LAST, | ||
| mlss."memberId" ASC | ||
| ) | ||
| END AS "finalRank" | ||
| FROM mm_latest_submission_scores AS mlss | ||
| ) | ||
| SELECT | ||
| COALESCE( | ||
| u.user_id::bigint, | ||
| CASE | ||
| WHEN sm."memberId" ~ '^[0-9]+$' THEN sm."memberId"::bigint | ||
| ELSE NULL | ||
| END | ||
| ) AS "userId", | ||
| COALESCE( | ||
| NULLIF(TRIM(u.handle), ''), | ||
| NULLIF(TRIM(mem.handle), ''), | ||
| sm."memberHandle" | ||
| ) AS "handle", | ||
| COALESCE(e.address, NULLIF(TRIM(mem.email), '')) AS "email", | ||
| COALESCE( | ||
| comp_code.name, | ||
| comp_id.name, | ||
| home_code.name, | ||
| home_id.name, | ||
| NULLIF(TRIM(mem."competitionCountryCode"), ''), | ||
| NULLIF(TRIM(mem."homeCountryCode"), '') | ||
| ) AS "country", | ||
| sm.is_marathon_match AS "isMarathonMatch", | ||
| CASE | ||
| WHEN sm.is_marathon_match THEN NULL | ||
| ELSE sms."submissionScore" | ||
| END AS "submissionScore", | ||
| CASE | ||
| WHEN sm.is_marathon_match THEN mrs."provisionalScore" | ||
| ELSE NULL | ||
| END AS "provisionalScore", | ||
| CASE | ||
| WHEN sm.is_marathon_match THEN mrs."finalRank" | ||
| ELSE NULL | ||
| END AS "finalRank" | ||
| FROM submitter_members AS sm | ||
| LEFT JOIN identity."user" AS u | ||
| ON sm."memberId" ~ '^[0-9]+$' | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [ |
||
| AND u.user_id = sm."memberId"::numeric | ||
| LEFT JOIN identity.email AS e | ||
| ON e.user_id = u.user_id | ||
| AND e.primary_ind = 1 | ||
| LEFT JOIN members."member" AS mem | ||
| ON sm."memberId" ~ '^[0-9]+$' | ||
| AND mem."userId" = sm."memberId"::bigint | ||
| LEFT JOIN lookups."Country" AS home_code | ||
| ON UPPER(home_code."countryCode") = UPPER(mem."homeCountryCode") | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [ |
||
| LEFT JOIN lookups."Country" AS home_id | ||
| ON UPPER(home_id.id) = UPPER(mem."homeCountryCode") | ||
| LEFT JOIN lookups."Country" AS comp_code | ||
| ON UPPER(comp_code."countryCode") = UPPER(mem."competitionCountryCode") | ||
| LEFT JOIN lookups."Country" AS comp_id | ||
| ON UPPER(comp_id.id) = UPPER(mem."competitionCountryCode") | ||
| LEFT JOIN standard_member_scores AS sms | ||
| ON sms."memberId" = sm."memberId" | ||
| LEFT JOIN mm_ranked_scores AS mrs | ||
| ON mrs."memberId" = sm."memberId" | ||
| ORDER BY | ||
| CASE | ||
| WHEN sm.is_marathon_match THEN mrs."finalRank" | ||
| ELSE NULL | ||
| END ASC NULLS LAST, | ||
| CASE | ||
| WHEN sm.is_marathon_match THEN NULL | ||
| ELSE sms."submissionScore" | ||
| END DESC NULLS LAST, | ||
| "handle" ASC NULLS LAST, | ||
| "userId" ASC NULLS LAST; | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[⚠️
performance]Consider removing the
MATERIALIZEDkeyword unless you have a specific reason to use it. Materializing a CTE can have performance implications, as it forces the query planner to execute and store the results of the CTE immediately, which might not be necessary here.