Skip to content

Commit

Permalink
fix grade datapuller and add index (#769)
Browse files Browse the repository at this point in the history
* fix grade datapuller and add index

* plurarize function
  • Loading branch information
maxmwang authored Feb 1, 2025
1 parent 7910ca3 commit 463b885
Show file tree
Hide file tree
Showing 7 changed files with 141 additions and 282 deletions.
4 changes: 2 additions & 2 deletions apps/backend/src/modules/catalog/controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
CourseModel,
CourseType,
GradeDistributionModel,
GradeDistributionType,
IGradeDistributionItem,
SectionModel,
SectionType,
TermModel,
Expand Down Expand Up @@ -460,7 +460,7 @@ export const getCatalog = async (

return accumulator;
},
{} as Record<string, GradeDistributionType[]>
{} as Record<string, IGradeDistributionItem[]>
);

const entries = Object.entries(reducedGradeDistributions);
Expand Down
4 changes: 2 additions & 2 deletions apps/backend/src/modules/grade-distribution/controller.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {
GradeDistributionModel,
GradeDistributionType,
IGradeDistributionItem,
SectionModel,
TermModel,
} from "@repo/common";
Expand Down Expand Up @@ -33,7 +33,7 @@ interface Grade {
count: number;
}

export const getDistribution = (distributions: GradeDistributionType[]) => {
export const getDistribution = (distributions: IGradeDistributionItem[]) => {
const distribution = distributions.reduce(
(
acc,
Expand Down
237 changes: 0 additions & 237 deletions apps/backend/src/scripts/update-grade-distributions.ts

This file was deleted.

56 changes: 50 additions & 6 deletions apps/datapuller/src/lib/grade-distributions.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { IGradeDistributionItem } from "@repo/common";

import { QueryExecutor } from "./api/aws-athena";

export interface GradeDistributionRow {
Expand Down Expand Up @@ -37,16 +39,20 @@ export interface GradeDistributionRow {

export const formatDistribution = (distribution: GradeDistributionRow) => {
// TODO: Pivot the data
return {
const output: IGradeDistributionItem = {
courseId: distribution.course_id,
subject: distribution.subject_cd,
courseNumber: distribution.course_number,
courseOfferingNumber: parseInt(distribution.course_offer_nbr),
termId: distribution.semester_year_term_cd,
session: distribution.session_code,
sessionId: distribution.session_code,

classNumber: distribution.class_number,
sectionNumber: distribution.class_section_cd,

count: parseInt(distribution.grade_count),
distinct: parseInt(distribution.distinct_grades),

countAPlus: parseInt(distribution.grade_count_a_plus),
countA: parseInt(distribution.grade_count_a),
countAMinus: parseInt(distribution.grade_count_a_minus),
Expand All @@ -70,19 +76,54 @@ export const formatDistribution = (distribution: GradeDistributionRow) => {
countH: parseInt(distribution.grade_count_h),
countPC: parseInt(distribution.grade_count_pc),
};

return output;
};

/**
* Get grade distribution rows for a specific term
*/
export const getGradeDistributionDataByTerm = async (
export const getGradeDistributionDataByTerms = async (
database: string,
s3Output: string,
regionName: string,
workGroup: string,
termId: string
termIds: string[]
) => {
const query = `SELECT course_id, course_offer_nbr, semester_year_term_cd, class_number, subject_cd, course_number, session_code, class_section_cd, grade_count, distinct_grades, grade_count_a_plus, grade_count_a, grade_count_a_minus, grade_count_b_plus, grade_count_b, grade_count_b_minus, grade_count_c_plus, grade_count_c, grade_count_c_minus, grade_count_d_plus, grade_count_d, grade_count_d_minus, grade_count_f, grade_count_p, grade_count_np, grade_count_s, grade_count_u, grade_count_cr, grade_count_nc, grade_count_hh, grade_count_h, grade_count_pc FROM "lf_cs_curated"."student_grade_distribution_data" WHERE semester_year_term_cd = '${termId}'`;
const query = `SELECT
course_id,
course_offer_nbr,
semester_year_term_cd,
class_number,
subject_cd,
course_number,
session_code,
class_section_cd,
grade_count,
distinct_grades,
grade_count_a_plus,
grade_count_a,
grade_count_a_minus,
grade_count_b_plus,
grade_count_b,
grade_count_b_minus,
grade_count_c_plus,
grade_count_c,
grade_count_c_minus,
grade_count_d_plus,
grade_count_d,
grade_count_d_minus,
grade_count_f,
grade_count_p,
grade_count_np,
grade_count_s,
grade_count_u,
grade_count_cr,
grade_count_nc,
grade_count_hh,
grade_count_h,
grade_count_pc
FROM "lf_cs_curated"."student_grade_distribution_data" WHERE semester_year_term_cd IN ('${termIds.join("', '")}')`;

const enrollment = new QueryExecutor(
database,
Expand All @@ -94,5 +135,8 @@ export const getGradeDistributionDataByTerm = async (

const data = await enrollment.execute<GradeDistributionRow>();

return data;
if (!data) {
return [];
}
return data.map(formatDistribution);
};
Loading

0 comments on commit 463b885

Please sign in to comment.